У меня есть блок данных, который я определяю как диапазон ("ARRAY_DIM") в Excel. Диапазон включает в себя много данных, но также имеет много строк и столбцов без данных вообще. Ниже приведен пример определенного диапазона. Обратите внимание, что количество столбцов данных для каждого идентификатора варьируется, поэтому ARRAY_DIM определяется с помощью +100 столбцов (из которых только несколько строк будут содержать данные).
Banana 10 20 30 40 50 70
Parrot 5 1 4 30
Apple 3 3 5 6 20
Car 10 20 30 40 30
Donkey 4 12 3 0 4 5
Coconut 10 4 0 1
Я вставляю все эти данные в массив, чтобы я мог просмотреть список соответствующих идентификаторов, а затем вставить данные, связанные с идентификаторами, в соседние ячейки (та же строка). Ниже приведен упрощенный пример идентификаторов (первый столбец - это диапазон, определенный как «ВЫХОД»), и где я собираюсь вставить соответствующие данные для идентификаторов, включенных в массив.
Banana 10 20 30 40 50 70
SHARK
Apple 3 3 5 6 20
Airplane
У меня проблемы с выполнением этой задачи на основе приведенного ниже кода. Он отлично работает для первой строки / идентификатора, но затем я получаю сообщение об ошибке «Subscript out of range» в строке вывода .Cells. Буду признателен, если кто-нибудь сможет просмотреть код и, возможно, указать на какие-либо ошибки.
Sub test()
Dim arr As Variant
Dim cell As Range
With ThisWorkbook.Sheets("Sheet1")
arr = .Range("ARRAY_DIM")
End With
With ThisWorkbook.Sheets("Sheet2")
For Each cell In .Range("OUTPUT")
For x = LBound(arr, 1) To UBound(arr, 1)
If arr(x, 1) = cell.Value Then
For n = LBound(arr, 1) To UBound(arr, 1)
.Cells(cell.Row, n + 2) = arr(x, n + 1)
Next n
End If
Next x
Next cell
End With
End Sub