Excel從右向左查找

(轉載自http://www.gocalf.com/blog/excel-find-from-right.html)


要在Excel裡面實現從右向左查找。比如給定字符串“abc,defg,hi,jkl”,需要找到最右一個逗號的位置(即12),或者最右一個逗號右邊的部分(即“jkl”)。

Excel裡面字符串查找用的FIND函數,只能從左向右(可以指定起始位置)地進行字符串查找。如果想要找到最右邊的待查字符串,就要稍微費點兒勁兒了。

如果分隔符的個數是已知且確定的(比如IP地址中的小數點),可以通過多個FIND函數嵌套來實現。但這個其實是從左到右查找第n個。如果分隔符的個數不確定,這個方法就不太合適的。

處理方法是這樣的,假設單元格A1存放著包含分隔符的完整字符串(如上面提到的“abc,defg,hi,jkl”),那麼查找最右一個逗號的公式為:

=FIND(CHAR(1),SUBSTITUTE(A1,",",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1,",",""))))
這個公式的結果顯然是12。

看起來很複雜,其實一步步拆解開並不是太難,基本的原理是這樣的:

SUBSTITUTE(A1,",",""):把原字符串中的逗號全部刪除(替換成空字符串),得到臨時字符串text1;

LEN(A1)-LEN(text1):用原字符串的長度減去text1的長度,即可知道原字符串中總共有多少個逗號,num2;

SUBSTITUTE(A1,",",CHAR(1),num2):利用SUBSTITUE函數,把原字符串中的最後一個逗號替換成特殊字符CHAR(1),得到臨時字符串text3;

FIND(CHAR(1),text3):在text3中查找特殊字符CHAR(1),其位置就是原字符串中最後一個逗號的位置pos。

真是一個奇妙的方法。

找到位置後,要取出左邊或者右邊的內容就很簡單了,公式分別是(用pos代替那個複雜的FIND函數):=LEFT(A1,pos-1),=RIGHT(A1,LEN(A1)- pos)。

留言

這個網誌中的熱門文章

Xeron 影印機 error code 「016-799」/ 異常結束 016-799 解決方法

HP DeskJet 3720 Printer 不能直接連線WiFi 打印和 WiFi Direct default password

Adobe reader DC open file very slow 解決開PDF超慢問題。