跳到主要內容跳到頁尾

LEFT、MID、RIGHT、LEN、FIND、SEARCH 用法:從文字裡切出你要的那一段

6 分鐘閱讀Lv.2 中級摘要與日期

LEFT、MID、RIGHT 依位置截取文字,LEN 算長度,FIND 與 SEARCH 找出符號的位置。附語法、FIND 與 SEARCH 的差別、找不到時的錯誤,以及把它們組起來拆商品編號的做法。

發布 更新

文章目錄

商品編號 TEA-0123-L 裡,我只想要前面的 TEA,或是中間的 0123,或是最後代表尺寸的 L,要怎麼從一格文字裡切出來?

這時候就是 LEFT、MID、RIGHT 的場合,再加上算長度的 LEN,以及找位置的 FIND 和 SEARCH。這篇當作函式參考,把六個放在一起查。轉成特定格式的 TEXT 在 TEXT 入門 講過,清理空格和取代在 文字清理函式,這邊不重複。

怎麼選

函式做什麼常搭配
LEFT從左邊取幾個字FIND
RIGHT從右邊取幾個字LEN
MID從指定位置取幾個字FIND
LEN算有幾個字RIGHT、MID
FIND找位置,分大小寫LEFT、MID
SEARCH找位置,不分大小寫LEFT、MID

這篇用同一份小資料,是三個商品編號,放在 A2:A4:

A
1編號
2TEA-0123-L
3TEA-45-M
4MLK-0678-XL

三個編號都是「品類 - 流水號 - 尺寸」,但流水號長度不一樣,這會讓事情變得有趣。

LEFT

從文字的左邊取出指定個數的字。

語法:

  • 文字:要截取的文字,或儲存格。
  • 字數:選填,沒寫的話預設是 1。
Google 試算表公式
fx

取編號的前 3 個字

=LEFT(A2, 3)

結果是 TEA。不寫字數的 只會取第一個字 T。

中文也是一個字算一個, 會得到 蘋果。字數寫 0 會得到空字串,寫負數則會出現 #VALUE!。

MID

從指定的位置開始,取出指定個數的字。

語法:

  • 起始位置:第一個字是 1。
  • 字數:必填,要取幾個字。
Google 試算表公式
fx

從第 5 個字開始取 4 個字

=MID(A2, 5, 4)

先數:T 是 1、E 是 2、A 是 3、「-」是 4,所以流水號從第 5 個字開始,4 個字,結果是 0123。

字數寫得比剩下的還多不會出錯, 會一路取到結尾,得到 0123-L。起始位置超過文字長度,會得到空字串。

從文字的右邊取出指定個數的字,用法跟 LEFT 對稱。

語法:

Google 試算表公式
fx

取編號最後 2 個字

=RIGHT(A4, 2)

結果是 XL。字數沒寫的話預設是 1, 是 L。

合成帳號只留末五碼:這是遮罩

在另一塊空白區的 D2 輸入 、D3 輸入 ,確保來源是文字、前導零還在。E2 放這條,再填到 E3:

Google 試算表公式
fx

長度不足五碼時不產生負數重複次數,原文字保留

=REPT("*", MAX(0, LEN(D2)-5))&RIGHT(D2, 5)

結果是 *****45678、0012。這裡用合成帳號;如果前導零已在輸入時被當數字丟掉,後面的文字函式不會憑空找回來。

這是顯示遮罩,不是加密:來源格仍有完整內容,遮罩欄不會改變分享權限。外發時只交付允許公開的結果並檢查檔案,不能以隱藏來源欄當成保護。

LEN

算出文字有幾個字,空格也算。

語法:

Google 試算表公式
fx

編號的長度

=LEN(A2)

TEA-0123-L 一共 10 個字,結果是 10。

數字也可以丟進去, 是 4。中文一個字算 1, 是 4。空字串 是 0,前後多空格的 是 3,資料看起來一樣但 LEN 不一樣的時候,通常就是藏了空格。

LEN 還有個我很常用的招,算某個符號出現幾次:整段長度減掉把符號拿掉之後的長度。

Google 試算表公式
fx

編號裡有幾個「-」

=LEN(A2) - LEN(SUBSTITUTE(A2, "-", ""))

結果是 2。SUBSTITUTE 的用法請看 文字清理函式。

FIND

找出一段文字在另一段文字裡第一次出現的位置,分大小寫,沒有萬用字元。

語法:

  • 要找的文字:想找的字或符號。
  • 搜尋的文字:在哪一段文字裡找。
  • 起始位置:選填,從第幾個字開始找,預設從頭。
Google 試算表公式
fx

第一個「-」的位置

=FIND("-", A2)

結果是 4。想找第二個「-」,就從第 5 個字開始找:

Google 試算表公式
fx

第二個「-」的位置

=FIND("-", A2, 5)

結果是 9。找不到的時候會得到錯誤, 因為大小寫不同,是 #VALUE!,包一層 IFERROR 就可以處理。

第 N 次出現:用可見的替代符號定位

第 2 次、第 3 次一直巢狀 FIND,很快就難讀。另一種方法是讓 SUBSTITUTE 只替換第 N 次,再找替代符號。另開空白表,A2 填 a/a/a、A3 填 a/a,B2 放下式後複製到 B3:

Google 試算表公式
fx

只替換第 2 個斜線,找不到時明確顯示提示

=IFERROR( FIND("♦", SUBSTITUTE(A2, "/", "♦", 2)), "找不到" )

B2 得到 4,B3 得到「找不到」。最後一個 2 就是出現次數;改成其他正整數前,也要確認該次真的存在。

替代符號不能已經出現在原文。若 A4 填 a♦/a/a,複製公式會先找到原有的 ♦,得到 2;真正第 2 個斜線卻在第 5 個位置。先檢查來源、換一個不存在的單字元,不要把錯誤結果拿去切字。

跟 FIND 一樣找位置,差別是不分大小寫,而且可以用萬用字元。

語法:

Google 試算表公式
fx

不分大小寫找 tea

=SEARCH("tea", A2)

結果是 1。萬用字元的 ? 代表任一個字、* 代表任意長度,所以 也是 1。

我個人的習慣是:符號和固定格式用 FIND,因為不會被大小寫騙;找英文字、不確定大小寫的時候用 SEARCH。

組起來:拆商品編號

回到一開始的題目。品類固定 3 個字,直接 LEFT:

Google 試算表公式
fx

取品類

=LEFT(A2, 3)

三列依序得到 TEA、TEA、MLK。要一次填滿 A2:A4 可以用 ARRAYFORMULA,寫成 。

流水號的長度不固定(0123、45、0678),就要靠 FIND 找兩個「-」的位置,中間那段從第一個「-」之後開始,長度是兩個「-」位置的差再減 1:

Google 試算表公式
fx

取中間的流水號

=MID( A2, FIND("-", A2)+1, FIND("-", A2, FIND("-", A2)+1)-FIND("-", A2)-1 )
  • FIND("-", A2) + 1:第一個「-」之後,也就是流水號的起點。
  • FIND("-", A2, FIND("-", A2) + 1):從起點開始找下一個「-」。
  • 兩者相減再減 1,就是流水號的字數。

A2 到 A4 的結果依序是 0123、45、0678。這裡要注意,MID 的結果是文字,前面的 0 會保留;要拿來算數字,乘以 1 或用 VALUE,例如 會得到 123。

尺寸在最後一個「-」之後,長度不固定。把第二個「-」換成別的符號再找它的位置,用 RIGHT 取後面的部分:

Google 試算表公式
fx

取尺寸

=RIGHT(A2, LEN(A2) - FIND("~", SUBSTITUTE(A2, "-", "~", 2)))

這個尺寸範例同樣假設原編號沒有 ~;若原本就有,需先換一個未出現的單字元,否則可能找錯位置。

SUBSTITUTE(A2, "-", "~", 2) 只把第 2 個「-」換成波浪號,變成 TEA-0123~L,FIND 找到波浪號在第 9 個字,總長 10 減 9 剩 1 個字。三列依序得到 L、M、XL。

寫起來有點長,我個人如果規則更複雜,會改用正規表示式,在 正規表示式抓文字 有教。簡單的固定格式,這幾個函式組起來就夠用了,試著貼進自己的資料看看吧!

分享:
#LEFT#MID#RIGHT#LEN#FIND#SEARCH
喜特先生 Mr. Sheet

喜特先生 Mr. Sheet

數據分析師/商業分析師

八年工作經驗,跨不同業界解決數據需求。做過的案例都整理在作品集。

接下來可以

相關文章

查看所有文章

留言討論

共 0 則留言

訂閱電子報,新文章上線就通知你

免費,隨時可取消。

送出即表示同意服務條款與隱私權政策。