妙用SEARCHB函數,直接從字元中提取出數字,既方便又簡單

妙用SEARCHB函數,直接從字元中提取出數字,既方便又簡單

來自專欄 Excel輕鬆學

繁雜的事物總有一定的規律可循,給懶人製造借口,但的確可以有既省時又省力的方法去解決問題。有的人辛苦的勞作,有的人輕點滑鼠,很難說哪種方式更好,但往往好的方法有時候並不是你最擅長的方法,故說那是好的方法,然後知道確實採用這個方法的道理。

還是講我們的函數吧,有時你需要從一系列的文字加數字的字元串中提取數字,例如人名加上分數,如何把兩者分開呢?怎麼能快速提取出數字呢?如下圖

在B列中漢字和數字是混合的,漢字的長度不一致,如何處理呢?這就要用到SEARCHB函數了。

SEARCHB函數,用於從Start_num開始,以位元組為單位不區分大小寫地查找指定某個文本在文本中的位置。其中,全形字元佔2個位元組,半形字元佔1個位元組。這個函數和SEARCH函數的意義是相同的,不過是以位元組為單位進行查找,而SEARCH函數是以字元為單位進行查找。

查找什麼呢?這裡要引入通配符「?」,在函數界里通配符共用三個半形的星號「*」,問號「?」波形符號「~」。其中星號「*」表示任何字元;問號「?」任何單個字元;波形符號「~」表示接觸字元的通配性。所以要查找前兩者的本身時前面要加上波形符號「~」,這裡我們要用到的是「?」,因為我們要進行的是查找到第一個半形符號的位置。

在上圖中的D1中錄入下面的公式:=MIDB(B2,SEARCHB("?",B2),LEN(B2))

公式講解:

SEARCHB("?",B2) 找到在B2單元格中第一個不為全形字元的位置;

MIDB(B2,SEARCHB("?",B2),LEN(B2)) 在B2 單元格中從第一個不為全形字元的位置開始截取到整個B2單元格長度的位置。

這樣就是上面數字的長度了。公式如下面的截圖:

這裡需要注意的是,中文和全形的標點符號都是全形字元佔用兩個位元組,而如上文中的「甲乙一:」都是全形字元,佔用8個位元組,而緊跟其後的數字1,佔用一個位元組,所以當用SEARCHB("?",B2)返回的是數字1的位置,這樣就起到了定位的作用。

取出的結果如下面的截圖:

當然SEARCHB函數不僅可以取出數字,通過上面的分析可以知道,這個函數還可以區分全形和半形,有興趣的朋友可以自己試試。

到現在為止,講到的文章中查找的函數有多種了,有FINDFINDB、SEARCHSEAARCHB,這幾個函數的區別是什麼呢?下面做個簡單的總結:

(1)函數FIND和SEARCH是以字元為計量單位;而函數FINDB和SEARCHB是以位元組為計量單位。

(2)函數FIND和FINDB區分字母大小寫,不支持通配符;而函數SEARCH和SEARCHB不區分字母大小寫,可用通配符進行模糊查找。

所以我們在錄入的時候也要注意自己的全形半形。

好了,到這裡SEARCHB函數就講解完了,相信大夥也共同學到了不少。在利用函數時,往往多個函數組合起來會發揮很大的作用,也會實現很多意想不到的效果。文章中的函數都是筆者多年的使用經驗,結合實際,所有的函數都是實際應用的截圖,不必擔心不好用。

學習更多Excel函數用法,以及VBA邏輯體系的建立方法,請關注微信公眾號"NZ_9668",或參加「VBA學習交流群」,可以得到更多的實用程序和方法。這個社群由群主親自講解,從實際應用出發,以程序為實例,保證你學過一個掌握一個,能夠自主應用一個。

分享成果,隨喜正能量


推薦閱讀:

偽·從零開始學Python - 1.3 Python Shell的基本使用
C語言基礎:地址與指針
怎樣在多台Web伺服器上共享Session
你可聽說過維基百科的真理之路
史上最清晰的「Android觸摸事件傳遞機制」圖解,一張圖全懂了!

TAG:編程 | 編程語言 | VBA |