妙用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觸摸事件傳遞機制」圖解,一張圖全懂了!