ExcelVBA 一個(gè)不靠譜的Filter函數(shù)
網(wǎng)友提問:

先介紹一個(gè)新函數(shù)Filter,這個(gè)函數(shù)平時(shí)用到的概率很低,挺不靠譜的,具體有多不靠譜呢,我們講講
Filter(數(shù)組,要找的字符,F(xiàn)alse)
前兩個(gè)參數(shù)是必選的,意思就是在數(shù)組中找后面字符,第三參數(shù)可選,默認(rèn)是True。如果寫成False意思就變了。

解讀:
當(dāng)有一個(gè)數(shù)組:arr1 = Array("孫興華", "穎寶", "小骨")
我們用Filter函數(shù)在arr1中找指定字符 ,也會(huì)返回成一個(gè)數(shù)組
arr2 = Filter(arr1, "小骨")? ? ? 假設(shè)能找到,它返回的就是? array("小骨")
arr2 = Filter(arr1, "小骨",False)??? 第三參數(shù)使用False時(shí),他會(huì)刪除找到的返回其它的?array("孫興華","穎寶")
arr2 = Filter(arr1, "骨")? ? 假設(shè)我們要找的字符只是包含在原數(shù)組中,返回也是array("小骨"),默認(rèn)模糊查詢。
arr2 = Filter(arr1, "骨",False)? 當(dāng)使用False時(shí),結(jié)果也是刪除模糊查詢找到的"小骨",返回array("孫興華","穎寶")
重點(diǎn)來(lái)了,如果我們要找的字符數(shù)組里沒有呢?
arr2 = Filter(arr1, "咳雷")?? ? ?直接報(bào)錯(cuò),Ubound(arr2) = -1,這個(gè)我們講過(guò),報(bào)錯(cuò)時(shí)才會(huì)出現(xiàn)-1,正常情況都是從0開始的。
arr2 = Filter(arr1, "咳雷",F(xiàn)alse)? ?不報(bào)錯(cuò),直接返回原數(shù)據(jù)內(nèi)容?array("孫興華","穎寶","小骨")
你看,以上講法,是不是全網(wǎng)獨(dú)家,你們隨意搜索VBA中的Filter函數(shù),不管是樂色N、聰明呼、還是方處非都不會(huì)有這樣的講法。其目的就是讓大家自己多測(cè)試,這才是學(xué)習(xí)的方法。
還有一點(diǎn)補(bǔ)充:正好與"咳雷"是相反的,就是查找空字符時(shí),但是在這里查空,有點(diǎn)說(shuō)過(guò)不去
arr2 = Filter(arr1, "")? ?返回:array("孫興華","穎寶","小骨")
arr2 = Filter(arr1, "",False)????直接報(bào)錯(cuò),Ubound(arr2) = -1
回到網(wǎng)友的提問上,有如下一張表

您是不是覺得這個(gè)函數(shù)可以解決我們今天遇到的問題?No!
記得我跟大家說(shuō)過(guò)吧,不要只看別人的總結(jié),一定要自己新自己試一下。
整個(gè)地球上都沒有一個(gè)科學(xué)家是聽別人講原理,自己不試驗(yàn)的。
遇到上面情況,你還是要循環(huán)數(shù)組,這就是我說(shuō)他不靠譜的原因。所以,還是用我們的老辦法吧。
先說(shuō)插入列的方法,ExcelVBA第三季第18課

如果不是在最后插入列,是不需要重新畫表格的,如果是在最后一列后添加新列,表格要重畫
ExcelVBA第二季16.8 講的添加邊框?

我們今天的代碼如下:
運(yùn)行 sub shishi? ? 會(huì)自動(dòng)調(diào)用下面的sub 添加邊框
返回結(jié)果:


ExcelVBA合集:https://www.bilibili.com/video/BV1rt4y1a72y
更多教程:https://www.bilibili.com/read/cv10222110