填充VBA数组,一次一行

时间:2015-02-24 22:37:34

标签: arrays excel vba excel-vba multidimensional-array

我希望能够一次填充包含数据行的数组,而不是逐个元素。例如,我想获得像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列。)

有没有办法做到这一点,还是我必须单独遍历每个元素?

3 个答案:

答案 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

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

答案 2 :(得分:0)

您实际上可以一次存储整个行。我正试图做你在这里所做的事情

考虑您在“ A3:Z3”中有要循环的公式,该公式有1000次并存储值。以下是步骤

声明一个变体

Dim myarray(1000) As Variant
for i = 1 to 1000
    myarray(i) = Range("A3:Z3").value2
next i

使用相同的循环粘贴到您想要的任何地方