一次一行地填充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列。)
有没有办法做到这一点,或者我将不得不单独循环每个元素?
你实际上可以一次性填充一个数组。 假设你感兴趣的范围在Sheet1
是A1: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/