关于EXCEL中VBA的数组理解-.pdf
《关于EXCEL中VBA的数组理解-.pdf》由会员分享,可在线阅读,更多相关《关于EXCEL中VBA的数组理解-.pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、关于 EXCEL 中 VBA 的数组理解一、什么是 VBA 数组不要把 VBA 数组想的太神秘,它其实就是一组数字而已。把一组数按行、列排在一起,放在内存中。就是一个VBA 数组。二、数组的维数数组的维数其实和文件管理的目录一样的,只有一层时就是一维。如果有两层则是二维数组(有行有列为二维),如果有三层,则是三维数组。VBA 中支持 13 维数组运算。Sub 数组示例()Dim x As Long,y As Long Dim arr(1 To 10,1 To 3)创建一个可以容下 10 行 3 列的数组空间For x=1 To 4 For y=1 To 3 arr(x,y)=Cells(x,y
2、)通过循环把单元格区域a1:c4 的数据装进数组中Next y Next x MsgBox arr(4,3)根据提供的行数和列数显示数组arr(1,2)=我改一下试试 你可以随时修改数组内指定位置的数据 MsgBox arr(1,2)End Sub总结:二维是由行和列表示的数组,如ARR(3,2)表示数组中第3 排第 2 列的元素。而一维数组只是由一个元素决定,如ARR(4)表示数组中第 4 个元素三、把单元格数据搬入内存:一、声明:Dim arr as Variant 声明一个变量,不能声明其他数据类型Dim arr(1 to 10,1 to 2),这种声明也是 错误的,固定大小的 VBA
3、数组是不能一次性装入单元格数据或:dim arr()这种声明方式是声明一个动态数组,也可以装入单元格区域,构成一个VBA 数组。二、装入arr=range(a9:c100)装入很简单,变量=单元格区域三、读出装入数组后的单元格数值,可以按数组名称(行数,列数)直接读取该位置的值,如下面的代码。Msgbox arr(3,2)就可以取出搬过去的而构成的数组第3 行第 2 列的内容四、示例 Sub s3()Dim arr()声明一个动态数组(动态指不固定大小)Dim arr1 声明一个 Variant 类型的变量arr=Range(a1:c7)把单元格区域 A1:C7 的值装入数组arr arr1=
4、Range(a1:c7)把单元格区域 A1:C7 的值装入数组arr1MsgBox 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 里,它有 4列 4 行For x=1 To 4 通过循环在 arr 数组中循环arr(x,4)=arr(x,3)*arr(x,2)数组的第 4 列(金额)=第 3列*第 2 例
5、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=Applicati
6、on.WorksheetFunction.CountIf(Range(a2:a6),10)计算大于 10 的个数ReDim arr(1 To k)再次声明 arr 的大小,正好盛下 k 数量的值For x=2 To 6 If Cells(x,1)10 Then m=m+1 arr(m)=Cells(x,1)通过循环把大于 10 的数字装入数组End If Next x MsgBox arr(2)End Sub 六、数组的上标(lBOUND)和下标(UBOUND)arr(-19 to 8)这个数组的编号就是从-19 开始的.那么它的最小编号就是-19,最大编号是 8,如果用语句返回就是:Sub
7、t1()Dim arr(-19 To 8)MsgBox UBound(arr)返回最大编号,结果为 8 MsgBox LBound(arr)返回最小编号,结果为-19 End Sub 如果是有行列组成的二维数组呢?二维数组返回行的下标和列的下标见下例Sub t2()Dim arr(-19 To 8,2 To 5)MsgBox UBound(arr)返回第 1 维(行的)最大编号,结果为 8 MsgBox LBound(arr)返回第 1 维(行的)小编号,结果为-19 MsgBox UBound(arr,2)返回第 2 维(列的)最大编号,结果为 5 MsgBox LBound(arr,2)返
8、回第 2 维(列的)最小编号,结果为 2 End Sub Sub t3()Dim arr arr=Sheets(1).UsedRange Usedrange 的行数和列数是未知的MsgBox UBound(arr,1)可以计算这个区域有多少行MsgBox UBound(arr,2)可以计算出这个区域有多少列End Sub 七、使用 Array函数创建常量数组:使用 Array 函数创建数组1 维常量数组:Array(A,1,C)2 维常量数组:Array(Array(a,10),Array(b,20),Array(c,30)也可以调用 excel 工作表内存数组:1 维数量:A,1,C 2 维
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关于 EXCEL VBA 数组 理解
限制150内