数字化工具VBA实战经验之四:数组及案例

数字化工具VBA实战经验之四:数组及案例

伙伴们,大家好。今天分享数组及案例,仅供参考。我们每天进步一点,梦想更近一步。

思语: 千里之行,始于足下。

万丈高楼平地起。高楼要稳如泰山,需要有坚固的地基,需要有一砖一瓦的砌合,需要有钢筋水泥的凝结,需要有日常持续的管理。





本文把VBA数组和Excel公式函数的数组进行对照说明。


一、数组的定义

数组:指一组数据的集合。


二、数组定义的相关说明

数组元素:指数组里的每个成员。

一组:指两个及两个以上元素,但特殊情况下也可以是一个元素。

数据类型:VBA中有不同的数据类型,可以是数字型、文本型、日期型、时间型和对象型等。而在Excel公式函数里使用的数组的数据类型一般为数字型、文本型、日期型、时间型等。

数组划分:在Office中有VBA数组和Excel公式函数的数组,它们都是数据存储的不同形式。

VBA数组存储在内存中,而Excel公式函数数组可以存储在内存中,也可以存储在工作表的单元格里。

VBA数组可以一维、二维或多维处理数据,而Excel公式函数数组是基于单元格处理数据。

VBA数组用于处理大数据,而excel公式函数数组用于处理小量数据。

VBA数组变量名称作为每个数组元素的共同引用名称,并通过数组的下标及下标的下界、上界的位置编号引用某个具体数组元素。

VBA数组的下标:指每个数组元素在数组中的位置编号。一维数组的下标是整数,从0开始,按自然数递增。比如,定义一个长整型的一维度数组:dim myarray1(5) as long,这个myarray1就是数组变量名称,该数组的下标范围为0到5,共计6个元素。

VBA数组的下界:指数组中元素的最小下标值。数组的下界默认为0。但是可以通过Option Base语句将其设置为1,即:在标准模块第一个过程之前输入语句:Option Base 1,那么此时定义的数组元素最小下标值为1。

提取VBA数组的下界值函数:Lbound(数组变量名称,数组维数)

VBA数组的上界:指数组中元素的最大下标值。例如,上述定义的数组myarray1的元素最大下标值为5。

提取VBA数组的上界值函数:Ubound(数组变量名称,数组维数)


三、数组的形式

数组的形式可以分为横向数组、纵向数组和多维数组。


1、横向数组

比如,在Excel公式函数参数中输入横向数组:{"销售费用", "管理费用", "研发费用"}。数组用一对大括号封存,在大括号里的各个数组元素之间使用逗号作为分隔符,如果元素是文本字符串需要使用英文双引号包裹起来。在Excel中,我们可以理解为行方向的数组。在VBA中使用Array函数:Array("销售费用", "管理费用", "研发费用")赋值。


2、纵向数组

比如,Excel公式函数参数中输入纵向数组:{"销售费用" ; "管理费用" ; "研发费用"}。数组用一对大括号封存,在大括号里的各个数组元素之间使用分号作为分隔符,如果元素是文本字符串需要使用英文双引号包裹起来。Excel中我们可以理解为列方向的数组。

VBA中使用Array函数:Array("销售费用", "管理费用", "研发费用")赋值,使用Application.Transpose函数转置为纵向数组。Application.Transpose(数组变量名称)。


3、多维数组

数组可是二维及以上的多维数组。这里举例二维数组,比如,{100,200,300 ; 400,500,600}, 它是一个两行三列的二维数组,数组用一对大括号封存,在大括号里第一行的横向数组各个元素之间使用逗号作为分隔符,第二行使用分号作为换行符,紧跟一个横向数组。




VBA中可直接批量赋值给数组变量名称。比如,myarray1 = range("A1:C2")




四、数组的注意事项


1、 数组的输入方法

Excel公式函数中使用数组作为参数进行计算,通常需要在各参数输入完毕后,同时按下Ctrl+Shift+Enter三键结束输入,并返回计算结果。一般是在Excel 2016及之前版本里,需这样操作。而在Excel 2019版本开始,直接按下Enter回车键就可以完成操作。而在VBA中,按上述举例直接对数组变量名称赋值。


2、数组公式与常规公式的区别

Excel中常规公式是我们日常在一个单元格里输入的。而数组公式可以在一个单元格里输入并返回计算结果,也可以先选中与数组维数大小相同的单元格区域(即:存储返回结果),然后输入数组公式完成计算。

Excel中常规公式在单元格未做保护的条件下,可以按Delete键删除或直接更改。而数组公式只能在输入数组公式时的首个单元格删除,除首个单元格外删除或更改,会弹出提示:无法更改部分数组。这也说明数组公式可以在一定程度上保护数据。


五、VBA数组案例


把A1:C2区域赋给数组myarray1,并把该数组的下界、上界写入B17:B20相应区域。编译代码并按F8键逐语句执行后如下图:




六、Excel公式函数的数组案例


在下述工作表中求出远昌财税的出现次数。在公式编辑栏输入:=SUM((B7:B14="远昌财税")+0)




发布于 2023-04-18 00:14 ・IP 属地福建