分享

【20180911】- VBA中数组、集合和字典(三)——数组的常用函数

 风中的王国 2021-02-14

大家好,我是中药党。上次我们一块学习了ExcelVBA数组赋值的相关内容,涉及的知识点还是不少的,尤其是常用的使用Split函数取得一维数组、用Range进行整体赋值和比较少用的用Redim Preserve扩充数组等内容都是很有必要掌握的知识点。

今天,我们一块学习ExcelVBA中数组的几个常用函数

1.求数组的长度(数组的元素个数)

VBA中,数组的长度并没有length、size、count等方法可以直接取得,因为数组有一维的,也有多维的。所以我们就要用到VBA中,数组最常用的两个函数UBound和LBound

UBound 函数:返回一个 Long型数据,其值为指定的数组维可用的最大下标。

语法:UBound(数组变量名称[, 数组的第几维]),数组第几维是可选参数,默认为1。

LBound 函数:返回一个 Long型数据,其值为指定的数组维可用的最小下标。

语法:LBound(数组变量名称[, 数组的第几维]) 数组第几维是可选参数,默认为1。

UBound 函数与 LBound 函数一起使用,用来确定一个数组的大小。求一维数组的大小如下图:

二位数组的元素个数,如下图:

所以,在需要得出数组长度或者循环遍历数组元素中,UBound和LBound两个函数的使用频率会非常高,小伙伴一定要掌握它们的使用。

2.将一维数组内容连接成字符串

通过Join函数,可以将一维数组中的元素合并成一个字符串,函数作用的对象且只能是一维数组。

Join函数:返回一个字符串,该字符串是通过连接某个一维数组中的多个子字符串而创建的。

语法:Join(数组[,分隔符]),分隔符是缺省参数,默认为一个空格。

Join函数和上次说过的Split函数是刚好相反的,Split函数是将一个字符串按照分隔符拆分成一个数组,而Join函数则是将一个数组通过分隔符连接成一个字符串。

看一个使用Join函数连接数组的例子,如下图:

Join函数除了用来连接内存中的数组外,Join也经常用于连接单元格区域的内容,如下图:

有的小伙伴的思路是这样的,如下图:

但是如上图这样,执行后就会报“无效的过程调用或参数”错误,如下图:

原因很简单,在上次文中介绍的区域整体赋值中,不管是一行还是一列赋值给数组变量,数组变量都是一个二维数组,只不过第一维的长度是1或者第二维的长度是1,而Join函数的参数只能是一维数组,所以才会报参数错误。我们可以通过转置的方法调整数组,使其变成一维数组,再进行连接,如下图:

当然,高版本的office365中,在工作表函数中就有TextJoin函数,可以直接完成这样功能,使用低版本office的小伙伴就可以用如上VBA的方法完成单元格区域中一行或者一列的数据连接了。

3.数组的检索

Filter函数:返回一个下标从零开始的数组,该数组包含基于指定筛选条件的一个字符串数组的子集。

Filter语法如下图:

Filter搜索返回的数组子集是从下标为0开始的数组,但如果返回的数组为空,则返回的数组的UBound为-1

使用Filter函数可以快速检索出数组中的元素是否包含某个字符串,如下图:

使用Filter函数也可以快速查找数组中含有多少个指定字符串,如下图:

4.对一维数组的排序

对一维数组的排序,各个语言中,最常用的就是冒泡法了,如下图:

但是在Excel中,就可以方便地利用工作表函数中的Large和Small,做更简单的数组排序,如下图:

Small(arr,K)函数就是返回一个数组中,从小到大第K个数值,而Large刚好相反,利用工作表函数,可以很快速地对一维数组进行排序。

以上就是在平常工作中,和数组相关的一些函数的使用方法,希望小伙伴们在掌握这些数组的基础方法之上,还能外延扩展出更多的使用场景,有问题可以和我们多多交流。

猜您喜欢

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多