В настоящее время я ищу более эффективный метод, с помощью VBA, для передачи информации из двумерного массива в Sub в ступенчатый набор диапазонов в книге Excel. Я привел то, что мне нужно, в приведенный ниже пример с кодом; любая помощь будет принята с благодарностью.
Я связал изображения, описывающие пример того, с чем я работаю (Input, Array и Output), и написал пример кода, который я использую ниже. Для простоты давайте определим «Входной лист» как Лист1 и «Выходной лист» как Лист2 в рабочей книге:
Option Explicit
Sub TransferData()
Dim myArray as Variant 'Define the array to hold the data.
Dim i as integer 'Define a generic loop counter variable.
myArray = Sheet1.Range("A1:F7") 'Pulls all the relevant data into the array.
myArray теперь выглядит точно так же, как диапазон. (Я бы опубликовал третью ссылку, но сначала мне нужно заработать еще несколько повторений).
Я хочу перенести данные в мой выходной файл, чтобы он выглядел так:
Вот как я сейчас подхожу к ситуации:
For i = 1 to ubound(myArray)
Sheet2.Cells(i,1) = myArray(i,1)
Sheet2.Cells(i,3) = myArray(i,2)
Sheet2.Cells(i,6) = myArray(i,3)
Sheet2.Cells(i,7) = myArray(i,4)
Sheet2.Cells(i,8) = myArray(i,5)
Sheet2.Cells(i,9) = myArray(i,6)
Next i
End Sub
Мой вопрос такой; есть ли способ передачи данных из массива в шахматные диапазоны способом, подобным тому, как я захватил массив; диапазон за раз? Например, что-то вроде:
Sheet2.Range("A1:A8") = myArray(1 to 7, 1) 'Note: this is total pseudocode
Sheet2.Range("C1:C8") = myArray(1 to 7, 2) 'Note: this is total pseudocode
и т.д ... и т.д ...
Полагаю, мне уже удалось научить себя достаточному количеству VBA, но я определенно не знаю всего, и с этим мне нужна помощь. Я пытаюсь свести к минимуму количество записей на листы из VBA; они действительно берут свое.
Любая помощь очень ценится.
Спасибо!