Excel VBA:使用二维数组数据填充交错范围

目前,我正在通过VBA寻找一种更有效的方法,以将从一个Sub内的二维数组传输的信息转换为Excel工作簿中交错的一组范围。 我在下面的例子中提炼了我需要的东西,并附上代码。 任何帮助将不胜感激。

我已经链接了描述我正在使用(input,数组和输出)的示例的图像,并且编写了我在下面使用的代码示例。 为了简单起见,让我们在工作簿中将“input表”定义为Sheet1和“Sheet Sheet”作为Sheet2:

输入表

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,但是我绝对不知道所有事情,这是我需要帮助的。 我正在尽量减less从VBA写入工作表的数量; 他们真的付出代价

任何帮助是极大的赞赏。

谢谢!

“复制和粘贴”值可能会相当快。 您显然需要将此概括为适合您的目的,但是此代码可以与您提供的示例一起使用:

 Sub TransferData() Sheet3.Range("A1:A7") = Sheet1.Range("A1:A7").Value Sheet3.Range("C1:C7") = Sheet1.Range("B1:B7").Value Sheet3.Range("F1:I7") = Sheet1.Range("C1:F7").Value End Sub 

根据要插入的“其他数据”的大小,一种非常简单的方法是将所有数据传输到输出范围,然后插入新列并根据需要放置其他数据。

例如:

 data = Worksheets("InputSheet").Range("A1:F7").Value Worksheets("OutputSheet").Range("A1:F7").Value = data Worksheets("OutputSheet").Columns("B").EntireColumn.Insert ' do this for every column you need, within reason. 

然后,您可以将“其他数据”放入您创build的所有新列中。