Здравствуйте, подскажите пожалуйста имеется столбец в который помещены определенные данные, но столбец имеет и пустые ячейки, как можно значения из столбца поместить в одномерный массив без пустых значений? [vba]
Код
Sub PPPP() a = Range("A1:A100").Value
End Sub
[/vba] Желательно без использования циклов..
Здравствуйте, подскажите пожалуйста имеется столбец в который помещены определенные данные, но столбец имеет и пустые ячейки, как можно значения из столбца поместить в одномерный массив без пустых значений? [vba]
Код
Sub PPPP() a = Range("A1:A100").Value
End Sub
[/vba] Желательно без использования циклов..Sashagor1982
Sashagor1982, если принципиален такой метод что у Вас, но не принципиален порядок значений, можно сначала сделать сортировку по столбцу А а потом записать данные. Но я бы предпочёл циклом: [vba]
Код
Sub ppp() Dim a() Dim k&, i&
For i =1 to 100 if Cells(i,1)<>"" then k=k+1 redim preserve a(k) a(k) =Cells(i,1) end if next i End Sub
[/vba]
Sashagor1982, если принципиален такой метод что у Вас, но не принципиален порядок значений, можно сначала сделать сортировку по столбцу А а потом записать данные. Но я бы предпочёл циклом: [vba]
Код
Sub ppp() Dim a() Dim k&, i&
For i =1 to 100 if Cells(i,1)<>"" then k=k+1 redim preserve a(k) a(k) =Cells(i,1) end if next i End Sub
Sub Пробирка() Dim a As Variant Range("A1:A100").SpecialCells(xlCellTypeConstants, xlTextValues).Copy Range("B1") a = Range("B1:B" & Cells(Rows.Count, 2).End(xlUp).Row) MsgBox UBound(a) End Sub
[/vba]
[vba]
Код
Sub Пробирка() Dim a As Variant Range("A1:A100").SpecialCells(xlCellTypeConstants, xlTextValues).Copy Range("B1") a = Range("B1:B" & Cells(Rows.Count, 2).End(xlUp).Row) MsgBox UBound(a) End Sub
Sub Пробирка() Dim rng As Range, a As Variant Set rng = Range("A1:A100") With Application a = Evaluate(Join(Array("IF(ISBLANK(", "),"""",ROW(", "))"), rng.Address(, , .ReferenceStyle))) a = .Index(rng.Value, .Small(a, Evaluate("ROW(R1:R" & .Count(a) & ")"))) End With MsgBox UBound(a) Erase a Set rng = Nothing End Sub
[/vba]
[vba]
Код
Sub Пробирка() Dim rng As Range, a As Variant Set rng = Range("A1:A100") With Application a = Evaluate(Join(Array("IF(ISBLANK(", "),"""",ROW(", "))"), rng.Address(, , .ReferenceStyle))) a = .Index(rng.Value, .Small(a, Evaluate("ROW(R1:R" & .Count(a) & ")"))) End With MsgBox UBound(a) Erase a Set rng = Nothing End Sub
Sub Ïðîáèðêà() Dim rng As Range, a As Variant Set rng = Range("A1:A100") With Application a = Evaluate(Join(Array("IF(ISBLANK(", "),"""",ROW(", "))"), rng.Address(, , .ReferenceStyle))) a = .Index(rng.Value, .Small(a, Evaluate("ROW(R1:R" & .Count(a) & ")"))) End With MsgBox UBound(a) ' Erase a Set rng = Nothing For ii = LBound(a) To UBound(a) MsgBox a(ii) Next End Sub
[/vba] Массив не заполнен..
Почему выдает ошибку? [vba]
Код
Sub Ïðîáèðêà() Dim rng As Range, a As Variant Set rng = Range("A1:A100") With Application a = Evaluate(Join(Array("IF(ISBLANK(", "),"""",ROW(", "))"), rng.Address(, , .ReferenceStyle))) a = .Index(rng.Value, .Small(a, Evaluate("ROW(R1:R" & .Count(a) & ")"))) End With MsgBox UBound(a) ' Erase a Set rng = Nothing For ii = LBound(a) To UBound(a) MsgBox a(ii) Next End Sub