接著介紹可以尋找文字的函式:FIND
跟 SEARCH
。這兩個函式都會回傳指定文字第一次出現的位置,而這位置會以數字表示。
舉例,我想要找「喜特先生」這四個字是否出現在下方的文字裡:
想學習更多 Google 試算表的知識,歡迎來看喜特先生的沙龍!
我就可以寫:
=FIND("喜特先生", "想學習更多 Google 試算表的知識,歡迎來看喜特先生的沙龍!")
或是:
=SEARCH("喜特先生", "想學習更多 Google 試算表的知識,歡迎來看喜特先生的沙龍!")
這兩者的結果都會回傳「25」,代表 FIND
跟 SEARCH
都找到了「喜特先生」,告訴你它出現在第 25 個字元。
FIND
跟 SEARCH
的關鍵差異就在「區分字母大小寫與否」,FIND
區分、SEARCH
則不區分。
舉例來說,我想在下方這串字裡用 FIND
和 SEARCH
找到「mr. sheet」:
Google Sheets Tutorial: Mr. Sheet
因為 FIND
會區分大小寫,以 FIND
找「mr. sheet」是否在上面的字串中會顯示錯誤,對 FIND
來說「mr. sheet」跟「Mr. Sheet」不同,有大小寫的差異。
不過用 SEARCH
的話就找得到了,因為對 SEARCH
來說「mr. sheet」跟「Mr. Sheet」是一樣的,沒有大小寫的差異。
當然,如果你要搜尋的字元是中文字、或是沒有大小寫差異的文字,選 FIND
跟 SEARCH
的結果都是一樣的喔。
另外開頭還提到「回傳指定文字第一次出現的位置」,這又是什麼意思?再看一個案例:
想學習更多 Google 試算表的知識,歡迎來看喜特先生的沙龍!歡迎歡迎喔!
我想用 FIND
找「歡迎」這個字,結果出現「21」:
這邊「21」指的是第一個「歡迎」位於第 21 個字元,但它還有兩個「歡迎」,而 FIND
沒有把它列入、用 SEARCH
函式也會是一樣的結果。那要讓 FIND
或 SEARCH
找第二個「歡迎」在哪,又該怎麼做呢?還有什麼其他要注意的地方嗎?
接下來會說明 FIND
跟 SEARCH
的使用方法和一些例子,一起來看看吧!
FIND
函式用來尋找某字串中,特定文字第一次出現的位置,會區分大小寫。
=FIND(要找的特定字串, 要找的文字, [從第 N 個字元開始找])
FIND
要從第 N 個字元開始找,預設是 1。如果 FIND
沒找到關鍵字,就會回傳「#VALUE!
」錯誤。
這邊提一下剛剛「Google Sheets Tutorial: Mr. Sheet」的例子,帶你了解 FIND
實際區分大小寫的狀況如何。
這邊我想找 A2
是否含有「mr. sheet」這個詞,我就可以在 B2
寫:
=FIND("mr. sheet", A2)
結果顯示「#VALUE!
」:
這是因為以 FIND
找「mr. sheet」是否在上面的字串中就會顯示錯誤,因為對 FIND
來說「mr. sheet」跟「Mr. Sheet」不同,有大小寫的差異。
SEARCH
函式跟 FIND
函式一樣,可以讓在 Google 試算表中用來尋找某字串中,特定文字第一次出現的位置,但是不會區分大小寫。
=SEARCH(要找的特定字串, 要找的文字, [從第 N 個字元開始找])
SEARCH
要從第 N 個字元開始找,預設是 1。如果 SEARCH
沒找到關鍵字,就會回傳「#VALUE!
」錯誤。
沒錯,SEARCH
的語法跟 FIND
一樣!但因為它不會區分大小寫,SEARCH
的容錯程度比 FIND
高一點。
這邊會舉一些 FIND
跟 SEARCH
常用狀況!(不考慮大小寫的狀況,我都一律寫 FIND
唷)
假如說我想要找一個清單裡,有沒有「茶」這個字:
我就可以在 B2 這寫 FIND
,先從 A2
找是否有「茶」這個字:
=FIND("茶", A2)
這邊回傳了「4」,代表「茶」出現在 A2
的第 4 個字元。
我們這邊可以再搭配 IF
跟 ISERROR
,讓它回傳「否」跟「是」:
=IF(ISERROR(FIND("茶", A2)), "否", "是")
這邊的意思是,如果 FIND
的結果發生錯誤(也就是找不到的狀況下),就會回傳「否」,不然就回傳「是」。來看看結果:
然後把這個算式拉下來就完成了!
我們來回顧一下開頭提到的「找第二個歡迎」:
這邊試著找找看第二個「歡迎」在哪邊吧!
先用 FIND
找第一個「歡迎」在哪:
=FIND("歡迎", A2)
結果出現「21」,是第一個「歡迎」的位置。
這裡就可以用 FIND
和 SEARCH
的第三個參數,讓它們從指定位置開始往後找第二個「歡迎」。現在已經知道第一個「歡迎」在第 21 個字元,那麼只要讓 FIND
在第 22 個字元後找就行了!
所以我修改了一下這邊的算式:
=FIND("歡迎", A2, FIND("歡迎", A2) + 1)
這邊的第三個參數就再用 FIND
找一次、讓它回傳第一個「歡迎」的結果後,再加 1 就是了。
如果要找第三個、第四個、第 N 個呢?是可以用同樣的方式去找,但我不太推薦,因為算式會寫得很長。比如說我們要找第三個,就會變這樣:
=FIND("歡迎", A2, FIND("歡迎", A2, FIND("歡迎", A2) + 1) + 2)
所以我會搭配 CHAR
跟 SUBSTITUTE
來做,比較好讀、也比較有彈性:
=FIND(CHAR(999), SUBSTITUTE(A2, "歡迎", CHAR(999), 3))
(不確定 SUBSTITUTE
是什麼的話,下一篇會寫喔!)
MID
函式,擷取字串的一部分最後,我們還可以拿之前介紹的 MID
函式跟 FIND
搭配,讓它擷取指定字串的一部分。這也是個滿常見的應用場景!
我想取得這邊 Email 清單裡的帳號名,也就是「@」前面的字串:
這邊就可以在 B2 寫:
=MID(A2, 1, FIND("@", A2) - 1)
這算式的意思是讓 MID
先從 A2 的第一個字開始取,之後用 FIND
找到「@」的所在位置後減 1,使它不包含「@」字本身。
來看看效果:
這邊一樣把 B2 的算式拉下來,就取完囉!
這兩個函式和之前提過的 LEFT
、MID
、RIGHT
和 LEN
一樣都有它的 B 版:
FINDB
:以位元組為單位,尋找某字串中,特定文字第一次出現的位置,區分大小寫。SEARCHB
:以位元組為單位,尋找某字串中,特定文字第一次出現的位置,不區分大小寫。舉個小例子,用 FIND
和 FINDB
找「喜特先生」的所在位置:
結果有點不一樣,對吧!這是因為 FIND
是「以字為單位」、而 FINDB
則是「以位元組為單位」,會把中文字(全形字元)當 2 個字來算,所以看起來比 FIND
更遠。
不過我個人幾乎不用 FINDB
跟 SEARCHB
,畢竟用 FIND
跟 SEARCH
就可以解決大多數的狀況了。
最後最後,要提一下 FIND
跟 SEARCH
的缺點:沒那麼有彈性。
之前介紹 QUERY
的時候,在 LIKE
可以用底線(_
)跟星號(*
)做一些模糊搜尋,讓搜尋資料更有彈性一點,可惜 FIND
跟 SEARCH
沒辦法做這種操作。
而這個可以用常規表達式的相關函式來解決,讓找字這件事變得更輕鬆!之後喜特先生也會推出一系列的教學文,進一步介紹常規表達式是什麼,還有REGEXMATCH
、REGEXREPLACE
、REGEXEXTRACT
這三個函式怎麼使用。敬請期待啦!
最後畫重點!
FIND
函式與 SEARCH
函式都可用於尋找文字字串中指定字串的位置。FIND
函式會區分大小寫,而 SEARCH
函式會忽略大小寫。如果你喜歡這次的文章,歡迎你透過這些方法支持我:
想要看更多文章的話,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!
我是喜特先生,Mr. Sheet,我們下個教學見!