- 什么是数组?
- 在Excel里数组就是一个自由缩放的‘工作表‘,可以自定义决定大小(几行几列)。但不能只是一个单元格,因为‘工作表’是单元格集合。
- ‘工作表’用来存储数据,数组同样用来存储数据。数组是存放在内存当中的,在代码当中操作数组要比操作工作表快很多很多。
- 数组的的维度
- 数组一般有一维数组和二维数组,当然还有三维、四维......但一般只用到二维,其他都用不到,不需要纠结。
- 数组的声明
- 1、数组的下界如果缺省默认从0开始。
Dim arr(2)
- 声明一个含有3个元素的一维数组,即arr(0),arr(1),arr(2),这里看到,数组的起始是默认由0开始的。
- 2、声明数组的数据类型
Dim arr(2) As Integer
- 声明一个含有3个元素的一维数组,数据类型为整型。如果没声明数据类型,自然就是Variant类型,和声明变量一个道理。
- 3、数组的边界
Dim arr(1 To 10)
- 声明一个含有10个元素的一维数组,数组的索引从1(下界)开始,上界是10。
Dim arr(1 To 10, 1 To 20)
- 声明一个10行20列的二维数组。二维数组相对于上面的一维数组,有2个维度,自然每个维度都有各自的边界。
先看1 to 10,这是二维数组的第一维,下界是1,上界是10,也就是10行的范围;
再看1 To 20,这是二维数组的第二维,下界是1,上界是20,也就是20列的范围。
这个数组如果输出到工作表上,就是一个10行20列大小的单元格区域(一个微型的‘工作表’)
***
- 4、获取数组的上界和下界
- Lbound函数:获取数组的下界
- Ubound函数:获取数组的上界
Sub 数组()
Dim ar1(2)
Dim ar2(1 To 5)
Dim ar3(1 To 5, 1 To 10)
a = LBound(ar1)
b = UBound(ar1)
c = LBound(ar2)
d = UBound(ar2)
'二维数组ar3有2个维度
e = LBound(ar3, 1)'第一个维度的下界
f = UBound(ar3, 1)'第一个维度的上界
g = LBound(ar3, 2)'第二个维度的下界
h = UBound(ar3, 2)'第二个维度的上界
End Sub
![](http://upload-images.jianshu.io/upload_images/4364421-d82497206c52b552.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 由上可以知道Lbound和Ubound的写法是:Lbound(数组名称,维度);如果维度是1,可以省略,如e = LBound(ar3, 1)相当于e = LBound(ar3),但二维度及以上不能省略。
- 另外注意一维数组和二维数组元素的表示方法不同,一维数组,如ar1(0),ar2(3)....二维数组,如ar3(1,1),ar3(2,4)这和cells(行,列)表示方法其实是一样的原理。
- 可以这么认为:
- 二维数组就是一个‘类工作表’,可以当成一张工作表操作,数组中的元素就是单元格。
- 一维数组,可以认为是‘工作表’中的一行或一列,数组中的元素也就是单元格。但要注意的是:
- 【工作表中的一行或者一列并不是一维数组,而是二维数组,这里要记住的是,凡是数组赋值来源于工作表(单元格区域)的都是二维数组,给数组赋值的时候就会知道。】
***