Страницы: 1
RSS
Выбор НЕПУСТЫХ значений, VBA.
 
Здравствуйте.
Учусь работать с массивами. Хочу вытащить непустые значения из столбца А:А.
Получилось, но только при помощи удаления пустых строк.
А как можно сделать тоже самое, только без удаления строк?

Спасибо.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Можно копировать, вставить в другой диапазон (лист), сортировать по убыванию и загнать новый диапазон в массив.
 
Хочется попроще, если range("a:a")>0 .
Изменено: Владимир - 15.04.2015 14:18:04
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
А куда проще? Если перегонять из массива в другой массив, тоже циклом нужно.
 
Чё-т я не очень понял. В вашем примере в таблице нет пустых значений в столбце А. Да еще и ячейки объединены.
Вижу несколько способов решения.
1. Наложить фильтр на нужный столбец, убрав критерий "пустые". Скопировать получившееся и вставить на новый лист.
2. Макросом пройтись по нужному столбцу с условием
Код
s4et4ik=1
for i=1 to n do
if cells(i,1)<>"" then
cells(s4et4ik,50)=cells(i,1)
s4et4ik=s4et4ik+1
end if
next i
 
Привет, Володя! Все зависит от цели.Попробуй так..
Код
Sub tt()
    Dim lr&, i&, r As Range, rng As Range
    With Sheets(1)
        lr = .Cells(.Rows.Count, 1).End(xlUp).Row - 4
        Set r = .Range("A5:A" & lr)
        With r
            Set rng = .Cells(1)
            For i = 1 To .Cells.Count
                If .Cells(i) <> "" Then Set rng = Union(rng, .Cells(i))
            Next
        End With
        'Rng  искомый , что с ним делать)
        'rng(1,1)....rng(9,1)
    End With
End Sub
Изменено: Маугли - 16.04.2015 05:21:56
 
Цель - запись в шаблон.
Вариант:
Код
Sub Володя_привет_вскл_зн()
Dim lstr&, j&
Dim x As Range
Dim массив() As Variant
Application.ScreenUpdating = False
Range("I2:K100").ClearContents
lstr = Cells(Rows.Count, 2).End(xlUp).Row
With Range(Cells(5, 1), Cells(lstr, 1))
.UnMerge
  With .SpecialCells(2)
  ReDim массив(1 To .Count, 1 To 3)
  j = 1
  For Each x In .Cells
  массив(j, 1) = x.Value: массив(j, 2) = x.Offset(, 5).Value: массив(j, 3) = x.Offset(, 6).Value
  j = j + 1
  Next x
  End With
End With
Cells(5, 9).Resize(UBound(массив, 1), 3).Value = массив
Application.ScreenUpdating = True
End Sub
 
Доброго вам здоровья, Сергей Иванович, Карен.
Твой вариант, Карен, мне понравился. Но вопросик есть:
SpecialCells(2) - это что?
Изменено: Владимир - 16.04.2015 08:00:59
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
....метод позволяющий работать только с указанным в аргументе (2 - xlCellTypeConstants (и текст и числа)) типом данных. Я тебе справочную таблицу по SpecialCells высылал на почту 31 марта в 10:52.
 
Да, это у меня есть.
'а из констант числа
For Each x In .Cells.SpecialCells(xlCellTypeConstants, 1)
'а из констант текстовые
For Each x In .Cells.SpecialCells(xlCellTypeConstants, 2)
Вот и спросил, потому что у тебя было - либо числа, либо текст.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
Страницы: 1
Наверх