我希望能够一次填充包含数据行的数组,而不是逐个元素。例如,我想获得像3x3阵列这样的最终产品:
1 2 3
4 5 6
7 8 9
用行1 2 3填充,然后用4 5 6填充,然后用7 8 9填充。
在Excel中,我在单元格F1:Z1中设置公式,根据单元格A1:D1中的输入进行更改。宏在A1:D1中加载大小写,然后我希望能够选择单元格F1:Z1并将它们一次插入到数组中,而不是循环遍历F1,G1,H1,...,Z1中的各个元素。 (我有10,000个案例,所以我知道数组有10,000行和21列。)
有没有办法做到这一点,还是我必须单独遍历每个元素?
答案 0 :(得分:0)
您实际上可以一次填充数组。假设您感兴趣的范围在A1:C200
中为Sheet1
。您可以使用以下
Dim v as Variant
v = ThisWorkbook.Worksheets("Sheet1").Range("A1:C200").Value
这将为您提供一个包含3列和200行的2D数组。
答案 1 :(得分:0)
如果有人需要帮助,我也在寻找同样需要的解决方案,我现在就找到了。
以下是使用“索引”功能的解决方案:
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”的值。
假设我们在A,B和C列中,从第1行到第10行,这个值:
1 a q
2 b w
3 c e
4 d r
5 e t
6 f y
7 g u
8 h i
9 i o
10 j p
然后:
Debug.Print varTemp(1)
Debug.Print varTemp(2)
Debug.Print varTemp(3)
将显示:
2
b
w
答案 2 :(得分:0)
您实际上可以一次存储整个行。我正试图做你在这里所做的事情
考虑您在“ A3:Z3”中有要循环的公式,该公式有1000次并存储值。以下是步骤
声明一个变体
Dim myarray(1000) As Variant
for i = 1 to 1000
myarray(i) = Range("A3:Z3").value2
next i
使用相同的循环粘贴到您想要的任何地方