ExcelVBA 一个不靠谱的Filter函数
网友提问:

先介绍一个新函数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
回到网友的提问上,有如下一张表

您是不是觉得这个函数可以解决我们今天遇到的问题?No!
记得我跟大家说过吧,不要只看别人的总结,一定要自己新自己试一下。
整个地球上都没有一个科学家是听别人讲原理,自己不试验的。
遇到上面情况,你还是要循环数组,这就是我说他不靠谱的原因。所以,还是用我们的老办法吧。
先说插入列的方法,ExcelVBA第三季第18课

如果不是在最后插入列,是不需要重新画表格的,如果是在最后一列后添加新列,表格要重画
ExcelVBA第二季16.8 讲的添加边框

我们今天的代码如下:
运行 sub shishi 会自动调用下面的sub 添加边框
返回结果:


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

