今天和大家要说的是VBA数组的应用,上篇文章我们说的是数组的基础知识点,有不明白的小伙伴可以点击链接进行知识点回顾Excel VBA 数组基础知识,初学者不可不学的关键知识,今天主要说说数组的几个操作方法,这个是我们以后会经常遇到的,也是经常会使用的方法。
数组的合并和字符串拆分(Join & Split)
在Excel的数据处理时候,我们经常会遇到拆分和合并的操作,可能你在Excel中的基础操作都会,但是我们如果要操作数组呢?数组是在我们内存之中的,我们无法再Excel中可以看到,除非是在本地窗口中可以看到。
一起来看看例子:
拆分字符串 split(字符串,"分隔符")
用分隔连接数组的每个元成一个字符串 join(数组,"分隔符")
![ed8b156f01f93b52705e7b95943b8965.png](https://i-blog.csdnimg.cn/blog_migrate/ee3f96168cb73448261c0f388ed45395.jpeg)
是不可以看到这2个函数的用法其实很简单,他们的作用是相反的,一个是合并,一个拆分,天下分分合合,就在你和我之间。有么有喜欢上这对冤家?
但是需要注意的一点是,他们都只能操作一维数组,这个是比较限制的。如果们在二维数组时候,想使用个方法,我们应该第一步转化成一维数组,然后在操作即可。
Filter实现数组筛选
其实数组的筛选就是根据我们指定的条件,从数组中筛选出来符合我们指定条件的值,然后在组成一个新的数组。这个操作你肯定不陌生,如下图所示,我们在Excel中的常规操作:
![250311989c89e147400487bb93a9bbe7.png](https://i-blog.csdnimg.cn/blog_migrate/7e25dc39ea28796a7938c2b836b34bfa.jpeg)
但是今天我们猪脚是在数组中进行帅选,我们用的是Filter函数,用法是:Filter(数组, 筛选的字符, 是否包含)
我们可能只说使用方法,其实你还是不太明白,我们举一个例子,你看了就明白,如需他所示:
![3b363ef8e9c12c5e677baacc2b00e528.png](https://i-blog.csdnimg.cn/blog_migrate/df8e5ed513955e21ed1bb730f70f43e7.jpeg)
Arr是我们利用常数数组进行赋值的数组,arr1是我们帅选包括字符”A”的新组成的一个数组,arr2,是我们帅选出来不包括“A”的新数组。不知道你发现没有,我们在数组中使用这个函数的时候,只能模糊帅选,并不能精确进行帅选,这个请务必注意一点。
取出数组中的最大值和最小值(Max和Min)
在Excel中我们取出最大值和最小值,我们都是用的MAX和MIN函数,其实这2个在我们的数组中,亦可使用,具体使用方法如下所示:
![353f92046ecc6891c0c4458823a8a0b3.png](https://i-blog.csdnimg.cn/blog_migrate/93c04cdffa84415748aa8b674df037b8.jpeg)
顺便再说一下,我们也可以取出数组的第几大值和几小值,如下:
![b2dda1dbcadfdf2b62278c6ff042af4a.png](https://i-blog.csdnimg.cn/blog_migrate/853dca56b8fdc3d65edbc13ee305d3f7.jpeg)
这个方法在我们统计数据的时候,经常会用到。
数组求和
在数组中,我们同样可以求和,同样也是借用工作表函数SUM来完成,我们一起看看:
![f33f86bf8f7e10e76427f63054583bd7.png](https://i-blog.csdnimg.cn/blog_migrate/edb2df7a3e52dcb512cb4e33e9ae9282.jpeg)
是不是发现,数组怎么这么好用?其实数组操作还不止这些,我们在继续看看:
数组的计数Count和Counta
Count和Counta可以统计数组中数字的个数和数字+文本的个数。如下图所示:
![e7c7c21dc9bd3c1ccff39e22e645656f.png](https://i-blog.csdnimg.cn/blog_migrate/db2cdd76bf080680b16aea988a0c851f.jpeg)
Count和Counta在数组中和Excel中的使用方法是一样的,是通用的。
数组的查询和拆分
假如我们已经有了一个数组,但是我们想查询其中的某一个值,通过帅选只能模糊匹配,那我们有没其他的方法呢?如下:
![1b8baddf11cf796cbca25c0cef66aa02.png](https://i-blog.csdnimg.cn/blog_migrate/8bff337dc23496529243f2d4f3c5b233.jpeg)
数组从二维拆分成一维,你是否还记得我们上篇文章说的?
我们可以借用工作表函数index达到按列拆分数组,即多列构成的数组,你可以任意拆分出一列构成新的数组。方法是:Application.Index(数组, , 列数) :
![2eebd387653dace6d828f9fcc978624b.png](https://i-blog.csdnimg.cn/blog_migrate/33e832753673c6e3f6dbb0f3512107b2.jpeg)
数组拆分其实在VBA中间很难操作,有时候我们是借用API函数,或者说这个函数有多少人知道呢?所以我们一般记下index函数拆分数组即可:
数组维数的转换
今天说的最后一个,数组的维数的转变。这个也可借用工作表函数来完成这个,我们一起来看看吧 !
![8a3475dd285cf196330ad11494ebde43.png](https://i-blog.csdnimg.cn/blog_migrate/7589ab05b8d3e4caa0c9e0c74d981b0f.jpeg)
在转置时只有1列N行的数组才能直接转置成一维数组,这个请注意一下,否则会报错的。
其实我们很多的工作表函数都可以在我们的Excel中进行使用,我们可以自行尝试一下,看看实际的效果。
以上就是我们今天和大家说的代码的中的数组常用技巧,其实VBA代码学习起来非常简单,他就是一个脚本语言的存在,他有自己的条条框框,你按照他的游戏规则来写代码就可以。如果有不明白的或者不懂的可以在下方留言,我们会一一解答的。
![be4144d3758b2910be529da96e79f10b.png](https://i-blog.csdnimg.cn/blog_migrate/1fc07cce62febf1632ed8829dbdd8392.jpeg)
我是Excel教案,关注我持续分享更多的Excel技巧!