关于EXCEL中VBA的数组理解
 一、什么是VBA数组
不要把VBA数组想的太神秘,它其实就是一组数字而已。把一组数按行、列排在一起,放在存中。就是一个VBA数组。
二、数组的维数
数组的维数其实和文件管理的目录一样的,只有一层时就是一维。如果有两层则是二维数组(有行有列为二维),如果有三层,则是三维数组。。VBA中支持1~3维数组运算。
Sub 数组示例()
Dim x As Long, y As Long
Dim arr(1 To 10, 1 To 3)  '创建一个可以容下103列的数组空间
For x = 1 To 4
For y = 1 To 3
arr(x, y) = Cells(x, y)  '通过循环把单元格区域a1:c4的数据装进数组中
Next y
Next x
 MsgBox arr(4, 3) '根据提供的行数和列数显示数组
arr(1, 2) = "我改一下试试" '你可以随时修改数组指定位置的数据
 MsgBox arr(1, 2)
End Sub
总结:二维是由行和列表示的数组,如ARR(3,2)表示数组中第3排第2列的元素。而一维数组只是由一个元素决定,如ARR4)表示数组中第4个元素
三、把单元格数据搬入存:
一、声明:
Dim arr as Variant  '声明一个变量,不能声明其他数据类型
Dim arr(1 to 10, 1  to  2 ) , 这种声明也是错误的,固定大小的VBA数组是不能一次性装入单元格数据
或:dim arr()    这种声明方式是声明一个动态数组,也可以装入单元格区域,构成一个VBA数组
二、装入
arr =range("a9:c100")  '装入很简单,变量 = 单元格区域
三、读出
装入数组后的单元格数值,可以按数组名称(行数列数) 直接读取该位置的值,如下面的代码。
Msgbox  arr(3,2)  '就可以取出搬过去的而构成的数组第3行第2列的容
四、示例
 Sub s3()
Dim arr() '声明一个动态数组(动态指不固定大小)
Dim arr1  '声明一个Variant类型的变量
arr = Range("a1:c7")  '把单元格区域A1C7excel数组函数的实例的值装入数组arr
arr1 = Range("a1:c7")  '把单元格区域A1C7的值装入数组arr1 
MsgBox arr(1, 1)  '读取arr数组中第1行第1列的数值 
MsgBox arr1(2, 3)  '读取arr1数组的第2行第3列的数值 
End Sub
四、把存数据搬入单元格
Sub test()
Dim arr    '声明一个变量用来盛放单元格数据
Dim x As Integer
arr = Range("a2:d5")     '把单元格数据搬入到arr里,它有44 
For x = 1 To 4    '通过循环在arr数组中循环
arr(x, 4) = arr(x, 3) * arr(x, 2)     '数组的第4(金额)=3*2 
Next x
Range("a2:d5") = arr     '把数组放回到单元格中
End Sub
Sub test1()
Dim arr(1 To 5) '声明一维数组
For x = 1 To 5
arr(x) = x * 2  '通过循环给每个位置赋值
Next x
Range("A1:E1") = arr  '把数组导入到excel中的a1:e1单元格中
Range("A1:A5") = Application.Transpose(arr) '如果是放在一列中,就需要对数组进行转置后再存放
End Sub
五、动态数组的声明
Sub darr()
Dim arr()  '声明一个动态的arr数组(不知道它能盛多少数据)
Dim k
k = Application.WorksheetFunction.CountIf(Range("a2:a6"), ">10") '计算大于10的个数

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。