Вставить диапазон значений в многомерный массив - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь создать многомерный массив, в котором первый столбец содержит идентификаторы, а соседние столбцы содержат данные, относящиеся к этому идентификатору.Так, например, я хотел бы создать массив со следующей структурой:

Banana  10  20  30  40
Coconut 5   10  2   4
Apple   3   4   5   6

Построение массива начинается с определения соответствующих идентификаторов.Так, например, в вышеупомянутом это были бы Банан, Кокос и Яблоко.Данные, которые я использую для построения массива, будут иметь макет, как показано ниже:

Banana  10  20  30  40
Parrot  5   3   1   4
Apple   3   4   5   6
Car     10  20  30  40
Donkey  4   12  3   0
Coconut 5   10  2   4

Поэтому я начинаю с определения идентификаторов Banana, Coconut и Apple, а затем хочу автоматически заполнить мой массив на основев цикле по имени идентификатора в данных (я определил это как «INPUT»).Однако я не уверен, как правильно вставлять соседние данные в мой массив каждый раз, когда происходит совпадение идентификаторов.Я был бы очень признателен, если бы кто-нибудь мог объяснить, как я могу это сделать, на основе приведенного ниже кода.

identifierArray = Array("Banana", "Coconut", "Apple")
NumElements = UBound(identifierArray) - LBound(identifierArray) + 1

For Each Element In identifierArray
    ReDim Preserve arr(0 To NumElements, x)
    arr(i, 0) = identifierArray(i)
    i = i + 1
Next Element

For Each cell In ws.Range("INPUT")
    For Each Element In identifierArray
        If cell.Value = Element Then

         [Need help here]

        End If
    Next Element
Next cell

Мне не нужна помощь в создании решений VLOOKUP или INDEX / MATCH, так как это не имеет отношения к вышеуказанному.

1 Ответ

2 голосов
/ 12 июня 2019

Вы можете заполнить массив из диапазона на вашем листе следующим образом:

Option Explicit
Sub Test()

    Dim arr

    With ThisWorkbook.Sheets("Data")
        arr = .Range("A1:E6")
    End With

End Sub

Таким образом, диапазон как этот:

data

Превращается в массив, подобный следующему:

Array

Так что вам вообще не нужно выполнять цикл, что означает более быстрое выполнение и более дешевый код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...