Я заполняю таблицу из нескольких листов Excel из базы данных Lotus Notes, используя агент LotusScript в Notes. Чтобы оптимизировать код, я сначала создаю все данные в массиве, а затем выгружаю его в Excel, так как гораздо быстрее писать массив за один раз, чем писать каждую ячейку или строку отдельно.Хотите извлечь двумерный массив из трехмерного массива
Поэтому у меня есть трехмерный массив, содержащий данные, определенные
ReDim sheetData(sheets,rows,columns)
У меня нет никакой проблемы заполнения массива, используя записи навигатора, но когда я пришел, чтобы написать в Excel, я хотел сделать
For c = 0 to sheets
With xlSheet(c+1)
.Range(.Range.Cells(1,1) , .Range.Cells(rows+1, columns+1).Value = sheetData(c)
End With
Next
Это не работает, очевидно, потому что мне нужно предоставить три индекса для sheetData.
Итак, каков наилучший способ извлечения данных строк и столбцов?
Спасибо за предложение, Торстен. Я пробовал этот путь, но не мог понять, как создать список массивов (а поисковая система Google не дает никаких окончательных ответов). Однако я понял, что этот метод не будет очень красивым, так как мои листы не будут иметь одинаковое количество строк, и я бы предпочел не создавать массивы, которые будут иметь множество пробелов (.eg один лист будет имеют 22000 строк, а у другого будет 1700). Поэтому я использую 6, записывая данные по строке за раз, а не по листу за раз. Еще быстрее, чем писать в ячейку за один раз :-) –
Ваш 3D-массив очень растрачивает память. Предложение о списке массивов превосходно. Вы можете сделать это с помощью Dim sheetList List As Variant. Новый лист создается sheetList («имя листа») = массив ... и ссылается как sheetList («имя листа») (i, j) –