本文主要介绍VBA阵列使用案例的详细说明。本文通过一个简单的案例,说明了对这项技术的理解和使用。以下是详细内容。有需要的朋友可以参考一下。
目录
前言具体操作1、VBA数组定义方法2、数组赋值与计算3、数组连接与拆分)4、数组过滤)5、数组维度转换6、自定义函数以数组获取所有工作表名称7、数组赋值提高计算效率总结
前言
VBA在Excel的开发和应用中起到了明显的作用。用好数组可以提高工作效率。让我们开始揭开VBA阵列的神秘面纱。
具体操作
1、VBA数组的定义方法下面是几种常用的数组定义:一维数组的定义和二维数组的定义。
直接赋值定义,调用数组函数定义,调用Excel工作表内存数组
被直接定义为给数组赋值。
一维常数数组的定义
子数组1()
Dim arr(2)作为变量数组
arr(0)=vba
arr(1)=100
arr(2)=3.14
MsgBox arr(0)
末端接头
二维常数数组的定义
子arrDemo2()
Dim arr(1,1)作为变量 Dim arr(0到1,0到1)作为变量
arr(0,0)=apple
arr(0,1)=banana
arr(1,0)=pear
arr(1,1)=grape
对于i=0到1
对于j=0到1
MsgBox arr(i,j)
然后
然后
末端接头
用数组函数创建一个常量数组
一维数组
子数组元素3()
Dim arr作为变量数组
arr=Array(vba ,100,3.14)
MsgBox arr(0)
末端接头
二维数组
子数组元素4()
Dim arr作为变量数组
Arr=Array(Array(张三,100),Array(李四,76),Array(王五,80))
MsgBox arr(1)(1)
末端接头
调用Excel工作表内存数组
一维数组[{A ,1, C}]
二维数组[{a ,10;b ,20;c ,30}]
子mylook()
暗淡排列
arr=[{a ,10;b ,20;c ,30}]
范围( a1:b3)=数组
msbox application . worksheet function . vlookup( b ,arr,2,0)可以作为调用vlookup时的第二个参数。
末端接头
动态数组的定义方法
Sub arrDemo5()
Dim arr1()声明了一个动态数组(动态是指不固定的大小)
“Dim arr2”声明了Variant类型的变量
Arr1=Range(a1:b2 )将单元格区域a1:b2的值加载到数组Arr1中。
Arr2=Range(a1:b2 )将单元格区域a1:b2的值加载到数组Arr2中。
MSOXarr1 (1,1)读取arr数组中第一行和第一列的值。
MSOX ARR2 (2,2)读取arr1数组的第二行第二列中的值。
末端接头
2、数组的赋值和计算将单元格数据读入数组,进行计算,然后将其分配给单元格。
子arr_calculate()
“Dim arr”声明一个变量来保存单元格数据。
维度i%
Arr=Range(a2:d5 )将单元格数据移动到Arr中,ARR有4列4行。
对于arr数组中的i=1到4 循环,通过循环。
Arr(i,4)=arr(i,3) * arr(i,2)数组的第4列(金额)=第3列*例2
接下来我
Range(a2:d5)=arr 将数组放回单元格中
末端接头
3、数组的合并(join)与拆分(split)数组连接和拆分。
Sub join_demo()
将a作为变体变暗
Dim b作为变体
使用空格连接
a=数组(“红色”、“蓝色”、“黄色”)
b=Join(a,)
MsgBox( b的值为: b )红色蓝黄色
使用$加入
b=Join(a, $) Red$Bule$Yellow
MsgBox(使用分隔符后的联接结果是: b )
末端接头
Sub split_demo()
将a作为变体变暗
Dim b作为变体
a=Split(Red$Blue$Yellow , $) a=Array(red , Blue , Yellow )
b=未绑定(a)
对于i=0至b
MsgBox a(i)
然后
末端接头
4、数组的筛选(Filter)vba数组的过滤
子arr_filter()
arr=Array(ABC , F , D , CA , ER )
Arr1=VBA。Filter(arr, A ,True)用A筛选所有值以形成一个新数组。
Arr2=VBAFilter(arr, A ,False)过滤所有不带A的值,形成一个新数组。
Gboxjoin (arr1,,)查看过滤的结果。
末端接头
5、数组维度的转换(Transpose)数组维数的变换
一维到二维
Sub arr_tranpose1()
arr=Array(10, vba ,2, b ,3)
arr1=应用。转置
MSOXARR1 (2,1)转换后的数组是一个具有一列多行的二维数组。
末端接头
二维数组转一维注意:只有一列n行的数组才能直接转置成一维数组。
Sub arr_tranpose2()
arr2=范围( A1:B5 )
Arr3=应用。转置(应用。index (arr2,2))获取arr2的第2列中的数据,并将其转置到一维数组中。
MsgBox arr3(4)
末端接头
用“-”将单元格内容连接起来
Sub join_transpose_demo()
arr=Range(A1:C1 )
arr1=范围( A1:A5 )
MsgBox Join(应用程序。转置(应用。转置(arr)),-)
MsgBox Join(应用程序。转置(arr1),-)
末端接头
6、利用数组获取所有工作表名称的自定义函数使用数组获取所有工作表名称的自定义函数。
函数getSheetsname(id)
Dim i%,arr()
k=张。数数
ReDim arr(1到k)
对于i=1至k
arr(i)=Sheets(i)。名字
然后
getSheetsname=Application。索引(数组,id)
结束功能
7、数组赋值,提高计算效率数组赋值,提高计算效率。
2.03秒
子数据输入()
以双精度模糊开始
开始=定时器
Dim i
对于i=1到30000
单元格(I,1)=i
然后
MsgBox 程序的运行时间是格式(定时器启动, 0.00 )秒
末端接头
0.12秒
Sub dataInputArr()
以双精度模糊开始
开始=定时器
Dim i,arr(1到30000)作为字符串
对于i=1到30000
arr(i)=i
然后
范围( a1:a30000 )。价值=应用。转置
MsgBox 程序的运行时间是格式(定时器启动, 0.00 )秒
末端接头
0.09秒
Sub dataInputArr2()
以双精度模糊开始
开始=定时器
Dim i,arr(1到30000,1到1)作为字符串
对于i=1到30000
arr(i,1)=i
然后
范围( a1:a30000 )。值=数组
MsgBox 程序的运行时间是格式(定时器启动, 0.00 )秒
末端接头
总结
VBA仍然很强大。通过读取单元格区域的数据,赋给数组,然后使用数组函数或者调用Excel的内置函数进行相关处理。另外,array在赋值计算方面的效率也很高,可以自己尝试一下。
这就是本文对VBA阵列使用案例的详细解释。有关VBA阵列使用的更多相关内容,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!