2016-12-23 2 views
0

Предположим, что в другой ячейке у меня есть A. Так что я хочу, чтобы для AI ввел в array1 = Array («0», «80») и array2 = Array ("100", "240"). Но он должен вернуться array1, array2 в том же порядке значений, то есть, 0, 80, 100, 240.VBA: Массивы со значениями от x до x строк

A 0 100 
B 25 75 
A 80 240 
B 30 90 

Я думал о работе с диапазонами, например, это будет выглядеть в таблицу например, 2 первых столбца, а затем, если A = A, то он добавит все значения из второго столбца, соответствующего A в массиве 1, а затем все значения из третьего столбца, соответствующие A в массиве2. Или лучше работать с ячейками?

Надеюсь услышать от вас новости. Благодаря

ответ

0

вы лучше работать с массивами напрямую:

Option Explicit 

Sub main() 
    Dim dataArr As Variant 
    Dim nFounds As Long, iArr As Long 
    Dim myVal As Variant 

    myVal = Range("E1").Value '<--| set "E1" to your actual "another cell" address 

    With Worksheets("data") '<--| change "data" to your actual worksheet name 
     dataArr = .Range("C1", .Cells(.Rows.Count, 1).End(xlUp)).Value 
    End With 

    ReDim array1(1 To UBound(dataArr)) As Variant, array2(1 To UBound(dataArr)) As Variant 
    For iArr = 1 To UBound(dataArr) 
     If dataArr(iArr, 1) = myVal Then 
      array1(nFounds + 1) = dataArr(iArr, 2) 
      array2(nFounds + 1) = dataArr(iArr, 3) 
      nFounds = nFounds + 1 
     End If 
    Next 
    If nFounds > 0 Then ReDim Preserve array1(1 To nFounds) As Variant, array2(1 To nFounds) As Variant 
End Sub 
+0

Что такое переменная nFounds? Btw, он дает ошибку tiime 1004. – vbalearner

+0

'nFounds' подсчитывает количество совпадений в столбце 1 массива. BTW: какая строка выбрасывает ошибку? – user3598756

+0

@vbalearner, вы прошли через это? – user3598756

Смежные вопросы