将Excel数据存储到VBA中的多个数组中?

时间:2018-02-19 13:52:25

标签: arrays excel vba excel-vba

我在1张excel表中有几组数据。我想将每组数据存储到它们自己的数组中,以便我可以在之后进行必要的计算。我看到this thread关于如何获取数据并将其存储到一组数据的数组中,但是如何在A列,B列,C等中执行此操作。我想使用一些循环遍历不同的列,但由于列是由字母而不是数字定义的,我不知道如何递增它们。

此外,如果有人知道如何从vba代码中绘制数据的一些好资源,那也是值得赞赏的。我所看到的一切都是旧版本的excel(我正在使用Excel 2016)。

感谢。

以下是链接中提到的代码:

Dim Ar as Variant

Ar = Sheets("Sheet").Range("A1:A10000").Value

1 个答案:

答案 0 :(得分:3)

如果你想遍历整个列

Dim c As Long
For c = 1 To 10
    Debug.Print Worksheets("Sheet1").Columns(c).Address
Next c

或通过列,例如只有第5到第15行

Dim c As Long
For c = 1 To 10
    Debug.Print Worksheets("Sheet1").Range(Cells(5, c), Cells(15, c)).Address
Next c

但根据您在问题中提供的链接,您还可以将完整范围读入二维数组,这应该比逐列读取更快。

Dim DirArray As Variant
DirArray = Worksheets("Sheet1").Range("A1:C5").Value 'for a range

或者甚至多于一个整列,如

DirArray = Worksheets("Sheet1").Range(Columns(1), Columns(3)).Value 'for column 1 to 3

并像

一样访问它
Debug.Print DirArray(2, 3) 'where 2 = row 2 and 3 = column C

请注意,如果您的第一列和行不是1,则数组中的计数可能会有所不同。例如,如果您使用

DirArray = Range("B2:C10").Value
Debug.Print DirArray(1, 1) 'this is the value of Range("B2")

计数因第一行和第一列的偏移而移动。