Excel VBA解读(152): 数据结构——谈谈数组

论坛 期权论坛 期权     
完美Excel   2019-7-28 00:43   3822   0
学习Excel技术,关注微信公众号:
excelperfect

在VBA中,数组是一种很有用的数据结构。可以在数组中存放相关同类的数据,方便程序进行处理。本文主要较深入地讲解数组的概念。

数组实际上就是一个变量,用来存储多个相同类型的数据。

例如,下面的语句:
Dim payment As Integer
payment= 300
表示在变量payment中存储值300。也就是说,一个变量一次只能存储一个值。

如果我们有多个值需要存储,照这个方法,则需要多个变量:
Dim payment1 As Integer
Dim payment2 As Integer
Dim payment3 As Integer
Dim payment4 As Integer
Dim payment5 As Integer
payment1= 300
payment2= 250
payment3= 350
payment4= 100
payment5= 500

如果存储的值更多,例如有10000个值,则会需要10000个变量。这样,不仅麻烦而且易出错,查找变量的值也很麻烦,今后也难以对代码进行维护,代码也会很冗长。

其实,完全没有这个必要。对于这样的问题,我们可以使用数组轻松解决。假设数值存储在工作表列A中,为演示方便,假设只有5个数据,即数值在A2:A6区域,那么可以使用下面的代码来存储这些数值:
Dim i As Integer
Dim payments(1 To 5) As Integer
For i = 1 To 5
    payments(i) = Range(“A1”).Offset(i).Value
Next i

上面代码中的变量payments就是数组,它一次存储了5个数值。

语句:
Dim payments(1 To 5) As Integer
声明了一个包含5个值的一维数组,数组名后括号中的内容指定了数组索引取值范围。示例中,表明该数组的索引从1开始至5结束。payments数组的值及对应的索引值如下图1所示。


图1

如果上面payments数组存储的是某小区1号楼5名住户1季度的水电费,那么下面的语句:
payments(3)
将得到第3位住户的水电费,即350。

现在,要使用数组分别存储这5名住户一年4个季度的水电费,则可使用下面的语句:
Dim payments(1 To 5,1 To 4) As Integer
这声明了一个二维数组。使用两个循环语句给这个二维数组赋值:
Dim i As Integer
Dim j As Integer
For i = 1 To 5
    For j = 1 To 4
       payments(i,j) = Cells(i + 1, j).Value
    Next j
Next i

如下图2所示,现在payments是二维数组,且存储了单元格A2:D6区域中的数值。图2中,payments(3,2)中存储的值是300。


图2

再进一步,如果存储小区3栋楼的用户水电费信息呢?可以使用下面的语句:
Dim payments(1 To 5,1 To 4,1 To 3) As Integer
这声明了一个三维数组。如下图3所示,每栋楼的水电费数据在3个工作表中,可以将它们存储在这个三维数组中。


图3

当然,这种三维或更多维的数据不常用,只是了解一下,有助于对数组知识的理解。

小结
通过以上的学习,我们知道了数组可以用来方便地存储同一类型的多个值。通过声明数组来确定数组的大小,即能够存储的数据个数,以及存储的数据类型。通过数组索引来方便地获取相应位置的值。并且,可以声明一维、二维或多维数组,但一般常用的还是一维数组和二维数组。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:195
帖子:39
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP