EXCEL 查找某個字符在字符串中最后一次出現的位置


在EXCEL文檔里想從很長的文件路徑中取得文件名,【數據】→【分列】是個不錯的選擇,但用函數會顯得更高大上一些。

首先,需要獲取最后一個"\"所在的位置。

方法1:

FIND("@",SUBSTITUTE(A1(字符串所在單元格),"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))

這個比較好理解,只要理解了SUBSTITUTE第四個參數的作用就好。

SUBSTITUTE第四個參數:可選。 指定要用 new_text 替換 old_text 的事件。 如果指定了 instance_num,則只有滿足要求的 old_text 被替換。 否則,文本中出現的所有 old_text 都會更改為 new_text。

例:

所以,整個函數的意思是把字符串中最后一個"\"替換成字符串中沒出現過的其他字符(如“@”),然后在查找這個沒出現過的字符所在的位置就可以了。

 

方法2:

LOOKUP(1,0/(MID(A1(字符串所在單元格),COLUMN(1:1),1)="\"),COLUMN(1:1))

這個理解起來比較難。

先來理解COLUMN(1:1)的意思:

在空白EXCEL文檔里選中第一行,在編輯欄里輸入=COLUMN(1:1),再按Ctrl+Shift+Enter組合鍵

可以看到COLUMN(1:1)的結果是一個1~16384的數組。

 再看(MID(A1(字符串所在單元格),COLUMN(1:1),1)="\"),作用是一個個取出字符串中的字符,並判斷是否與"\"相同,相同則返回TRUE,否則返回FALSE。

0/TRUE得0,0/FALSE得

 所以0/(MID(A1(字符串所在單元格),COLUMN(1:1),1)="\")的結果是

所以LOOKUP(1,0/(MID(A1(字符串所在單元格),COLUMN(1:1),1)="\"),COLUMN(1:1))的結果是

 

EXCEL幫助里的備注:

本例中的LOOKUP函數在0/(MID(A1(字符串所在單元格),COLUMN(1:1),1)="\")里是找不到1的,所以它找到的是0,但在0/(MID(A1(字符串所在單元格),COLUMN(1:1),1)="\")里有多個0,從結果來看,它找到的是最后一個0。(為什么?在EXCEL幫助里沒有找到相關說明)

 聲明:本文是本人查閱網上及書籍等各種資料,再加上自己的實際測試總結而來,僅供學習交流用,請勿使用於商業用途,任何由此產生的法律版權問題概不負責,謝謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM