一次一行地填充VBA数组

我希望能够一次一行地填充数据行,而不是逐个元素。 例如,我想得到像3×3数组的最终产品:

1 2 3
4 5 6
7 8 9

通过填充行1 2 3,然后与4 5 6,然后与7 8 9。

在Excel中,我在单元格F1:Z1中设置了公式,该公式基于单元格A1:D1中的input进行更改。 macros载入A1:D1的情况下,然后我想能够select单元格F1:Z1,并将它们插入到一个数组中,而不是循环通过F1,G1,H1,…,Z1中的单个元素。 (我有10,000个案例,所以我知道该arrays将有10,000行和21列。)

有没有办法做到这一点,或者我将不得不单独循环每个元素?

你实际上可以一次性填充一个数组。 假设你感兴趣的范围在Sheet1A1:C200 。 您可以使用以下填充数组

 Dim v as Variant v = ThisWorkbook.Worksheets("Sheet1").Range("A1:C200").Value 

这将给你一个三列200行的二维数组。

如果有人需要帮助,我也正在寻求一个解决scheme,同样的需要,我现在发现了这个。

这是一个使用“索引”function的解决scheme:

 Sub Test() Dim varArray As Variant Dim varTemp As Variant varArray = ThisWorkbook.Worksheets("Sheet1").Range("A1:E10") varTemp = Application.Index(varArray, 2, 0) End Sub 

在本例中,varTemp在“A1:E10”范围内包含行号“2”的值。

假设我们在第1行到第10行的A,B和C列中有这个值:

 1 aq 2 bw 3 ce 4 dr 5 et 6 fy 7 gu 8 hi 9 io 10 jp 

然后 :

 Debug.Print varTemp(1) Debug.Print varTemp(2) Debug.Print varTemp(3) 

将显示:

 2 b w 

看看这里: https : //usefulgyaan.wordpress.com/2013/06/12/vba-trick-of-the-week-slicing-an-array-without-loop-application-index/