欢迎光临散文网 会员登陆 & 注册

ExcelVBA 一个不靠谱的Filter函数

2022-10-20 19:32 作者:孙兴华zz  | 我要投稿

网友提问:

先介绍一个新函数Filter,这个函数平时用到的概率很低,挺不靠谱的,具体有多不靠谱呢,我们讲讲

Filter(数组,要找的字符,False

前两个参数是必选的,意思就是在数组中找后面字符,第三参数可选,默认是True。如果写成False意思就变了。

解读:

当有一个数组:arr1 = Array("孙兴华", "颖宝", "小骨")

我们用Filter函数在arr1中找指定字符 ,也会返回成一个数组

arr2 = Filter(arr1, "小骨")      假设能找到,它返回的就是  array("小骨")

arr2 = Filter(arr1, "小骨",False)    第三参数使用False时,他会删除找到的返回其它的 array("孙兴华","颖宝")

arr2 = Filter(arr1, "骨")    假设我们要找的字符只是包含在原数组中,返回也是array("小骨"),默认模糊查询。

arr2 = Filter(arr1, "骨",False)  当使用False时,结果也是删除模糊查询找到的"小骨",返回array("孙兴华","颖宝")

重点来了,如果我们要找的字符数组里没有呢?

arr2 = Filter(arr1, "咳雷")      直接报错,Ubound(arr2) = -1,这个我们讲过,报错时才会出现-1,正常情况都是从0开始的。

arr2 = Filter(arr1, "咳雷",False)   不报错,直接返回原数据内容 array("孙兴华","颖宝","小骨")

你看,以上讲法,是不是全网独家,你们随意搜索VBA中的Filter函数,不管是乐色N、聪明呼、还是方处非都不会有这样的讲法。其目的就是让大家自己多测试,这才是学习的方法。

还有一点补充:正好与"咳雷"是相反的,就是查找空字符时,但是在这里查空,有点说过不去

arr2 = Filter(arr1, "")   返回:array("孙兴华","颖宝","小骨")

arr2 = Filter(arr1, "",False)    直接报错,Ubound(arr2) = -1

回到网友的提问上,有如下一张表

表名:Sheet1

您是不是觉得这个函数可以解决我们今天遇到的问题?No!

记得我跟大家说过吧,不要只看别人的总结,一定要自己新自己试一下。

整个地球上都没有一个科学家是听别人讲原理,自己不试验的。

遇到上面情况,你还是要循环数组,这就是我说他不靠谱的原因。所以,还是用我们的老办法吧。

先说插入列的方法,ExcelVBA第三季第18课

如果不是在最后插入列,是不需要重新画表格的,如果是在最后一列后添加新列,表格要重画

ExcelVBA第二季16.8 讲的添加边框 

我们今天的代码如下:

运行 sub shishi    会自动调用下面的sub 添加边框

返回结果:

ExcelVBA合集:https://www.bilibili.com/video/BV1rt4y1a72y

更多教程:https://www.bilibili.com/read/cv10222110

ExcelVBA 一个不靠谱的Filter函数的评论 (共 条)

分享到微博请遵守国家法律