文字處理基礎函式(三):FIND / SEARCH

閱讀時間約 9 分鐘

接著介紹可以尋找文字的函式:FINDSEARCH這兩個函式都會回傳指定文字第一次出現的位置,而這位置會以數字表示。

舉例,我想要找「喜特先生」這四個字是否出現在下方的文字裡:

想學習更多 Google 試算表的知識,歡迎來看喜特先生的沙龍!​

我就可以寫:

=FIND("喜特先生", "想學習更多 Google 試算表的知識,歡迎來看喜特先生的沙龍!​")

或是:

=SEARCH("喜特先生", "想學習更多 Google 試算表的知識,歡迎來看喜特先生的沙龍!​")

這兩者的結果都會回傳「25」,代表 FINDSEARCH 都找到了「喜特先生」,告訴你它出現在第 25 個字元。


FIND 跟 SEARCH 差在哪?

FINDSEARCH 的關鍵差異就在「區分字母大小寫與否」,FIND 區分、SEARCH 則不區分。

舉例來說,我想在下方這串字裡用 FINDSEARCH 找到「mr. sheet」:

Google Sheets Tutorial: Mr. Sheet

因為 FIND 會區分大小寫,以 FIND 找「mr. sheet」是否在上面的字串中會顯示錯誤,對 FIND 來說「mr. sheet」跟「Mr. Sheet」不同,有大小寫的差異

不過用 SEARCH 的話就找得到了,因為對 SEARCH 來說「mr. sheet」跟「Mr. Sheet」是一樣的,沒有大小寫的差異

當然,如果你要搜尋的字元是中文字、或是沒有大小寫差異的文字,選 FINDSEARCH 的結果都是一樣的喔。


另外開頭還提到「回傳指定文字第一次出現的位置」,這又是什麼意思?再看一個案例:

想學習更多 Google 試算表的知識,歡迎來看喜特先生的沙龍!​歡迎歡迎喔!

我想用 FIND 找「歡迎」這個字,結果出現「21」:

raw-image


這邊「21」指的是第一個「歡迎」位於第 21 個字元,但它還有兩個「歡迎」,而 FIND 沒有把它列入、用 SEARCH 函式也會是一樣的結果。那要讓 FINDSEARCH 找第二個「歡迎」在哪,又該怎麼做呢?還有什麼其他要注意的地方嗎?

接下來會說明 FINDSEARCH 的使用方法和一些例子,一起來看看吧!




FIND:找字串,區分大小寫

FIND 函式用來尋找某字串中,特定文字第一次出現的位置,會區分大小寫


語法

=FIND(要找的特定字串, 要找的文字, [從第 N 個字元開始找])
  • 要找的特定字串:這邊別忘了加上雙引號,代表「文字」的資料格式。
  • 要找的文字:這邊也要加上雙引號喔!
  • [從第 N 個字元開始找]:選填,可以設定 FIND 要從第 N 個字元開始找,預設是 1。

如果 FIND 沒找到關鍵字,就會回傳「#VALUE!」錯誤。

這邊提一下剛剛「Google Sheets Tutorial: Mr. Sheet」的例子,帶你了解 FIND 實際區分大小寫的狀況如何。

raw-image


這邊我想找 A2 是否含有「mr. sheet」這個詞,我就可以在 B2 寫:

=FIND("mr. sheet", A2)


結果顯示「#VALUE!」:

raw-image


這是因為以 FIND 找「mr. sheet」是否在上面的字串中就會顯示錯誤,因為對 FIND 來說「mr. sheet」跟「Mr. Sheet」不同,有大小寫的差異。




SEARCH:找字串,忽略大小寫

SEARCH 函式跟 FIND 函式一樣,可以讓在 Google 試算表中用來尋找某字串中,特定文字第一次出現的位置,但是不會區分大小寫


語法

=SEARCH(要找的特定字串, 要找的文字, [從第 N 個字元開始找])
  • 要找的特定字串:這邊別忘了加上雙引號,代表「文字」的資料格式。
  • 要找的文字:這邊也要加上雙引號喔!
  • [從第 N 個字元開始找]:選填,可以設定 SEARCH 要從第 N 個字元開始找,預設是 1。

如果 SEARCH 沒找到關鍵字,就會回傳「#VALUE!」錯誤。

沒錯,SEARCH 的語法跟 FIND 一樣!但因為它不會區分大小寫,SEARCH 的容錯程度比 FIND 高一點。




FIND 和 SEARCH 的應用場景

這邊會舉一些 FINDSEARCH 常用狀況!(不考慮大小寫的狀況,我都一律寫 FIND 唷)


檢查文字中是否包含特定字串

假如說我想要找一個清單裡,有沒有「茶」這個字:

raw-image


我就可以在 B2 這寫 FIND,先從 A2 找是否有「茶」這個字:

=FIND("茶", A2)
raw-image


這邊回傳了「4」,代表「茶」出現在 A2 的第 4 個字元。

我們這邊可以再搭配 IFISERROR,讓它回傳「否」跟「是」:

=IF(ISERROR(FIND("茶", A2)), "否", "是")

這邊的意思是,如果 FIND 的結果發生錯誤(也就是找不到的狀況下),就會回傳「否」,不然就回傳「是」。來看看結果:

資料來源:萬波島嶼紅茶專門店

資料來源:萬波島嶼紅茶專門店


然後把這個算式拉下來就完成了!

資料來源:萬波島嶼紅茶專門店

資料來源:萬波島嶼紅茶專門店




找第二個關鍵字在哪

我們來回顧一下開頭提到的「找第二個歡迎」:

raw-image


這邊試著找找看第二個「歡迎」在哪邊吧!

先用 FIND 找第一個「歡迎」在哪:

=FIND("歡迎", A2)
raw-image


結果出現「21」,是第一個「歡迎」的位置。

這裡就可以用 FINDSEARCH 的第三個參數,讓它們從指定位置開始往後找第二個「歡迎」。現在已經知道第一個「歡迎」在第 21 個字元,那麼只要讓 FIND 在第 22 個字元後找就行了!

所以我修改了一下這邊的算式:

=FIND("歡迎", A2, FIND("歡迎", A2) + 1)

這邊的第三個參數就再用 FIND 找一次、讓它回傳第一個「歡迎」的結果後,再加 1 就是了。

如果要找第三個、第四個、第 N 個呢?是可以用同樣的方式去找,但我不太推薦,因為算式會寫得很長。比如說我們要找第三個,就會變這樣:

=FIND("歡迎", A2, FIND("歡迎", A2, FIND("歡迎", A2) + 1) + 2)


所以我會搭配 CHARSUBSTITUTE 來做,比較好讀、也比較有彈性:

=FIND(CHAR(999), SUBSTITUTE(A2, "歡迎", CHAR(999), 3))

(不確定 SUBSTITUTE 是什麼的話,下一篇會寫喔!)




搭配 MID 函式,擷取字串的一部分

最後,我們還可以拿之前介紹的 MID 函式跟 FIND 搭配,讓它擷取指定字串的一部分。這也是個滿常見的應用場景!

我想取得這邊 Email 清單裡的帳號名,也就是「@」前面的字串:

raw-image


這邊就可以在 B2 寫:

=MID(A2, 1, FIND("@", A2) - 1)

這算式的意思是讓 MID 先從 A2 的第一個字開始取,之後用 FIND 找到「@」的所在位置後減 1,使它不包含「@」字本身。

來看看效果:

raw-image


這邊一樣把 B2 的算式拉下來,就取完囉!

raw-image




同場小加映:FINDB、SEARCHB

這兩個函式和之前提過的 LEFTMIDRIGHTLEN 一樣都有它的 B 版:

  • FINDB:以位元組為單位,尋找某字串中,特定文字第一次出現的位置,區分大小寫。
  • SEARCHB:以位元組為單位,尋找某字串中,特定文字第一次出現的位置,不區分大小寫。

舉個小例子,用 FINDFINDB 找「喜特先生」的所在位置:

raw-image


結果有點不一樣,對吧!這是因為 FIND 是「以字為單位」、而 FINDB 則是「以位元組為單位」,會把中文字(全形字元)當 2 個字來算,所以看起來比 FIND 更遠。

不過我個人幾乎不用 FINDBSEARCHB,畢竟用 FINDSEARCH 就可以解決大多數的狀況了。




最後最後,要提一下 FINDSEARCH 的缺點:沒那麼有彈性。

之前介紹 QUERY 的時候,在 LIKE 可以用底線(_)跟星號(*)做一些模糊搜尋,讓搜尋資料更有彈性一點,可惜 FINDSEARCH 沒辦法做這種操作。

而這個可以用常規表達式的相關函式來解決,讓找字這件事變得更輕鬆!之後喜特先生也會推出一系列的教學文,進一步介紹常規表達式是什麼,還有REGEXMATCHREGEXREPLACEREGEXEXTRACT 這三個函式怎麼使用。敬請期待啦!




最後畫重點!

  • FIND 函式與 SEARCH 函式都可用於尋找文字字串中指定字串的位置。
  • FIND 函式會區分大小寫,而 SEARCH 函式會忽略大小寫。




如果你喜歡這次的文章,歡迎你透過這些方法支持我:

  • 按下愛心、按下儲存
  • 留言告訴我你的想法
  • 加入喜特先生的官方沙龍,即時看到我發布的教學
  • 付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
  • 追蹤喜特先生的 Facebook
  • 這邊小額贊助我的創作!

想要看更多文章的話,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!

我是喜特先生,Mr. Sheet,我們下個教學見!



7.0K會員
147內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
留言0
查看全部
發表第一個留言支持創作者!
喜特先生官方沙龍 的其他內容
SPARKLINE 迷你圖表系列文索引
閱讀時間約 1 分鐘
LAMBDA 函式(五):SCAN
閱讀時間約 6 分鐘
LAMBDA 函式(六):REDUCE
閱讀時間約 6 分鐘
LAMBDA 系列索引文
閱讀時間約 2 分鐘
你可能也想看
心靈觸動:孩子與文字的邂逅-把曾經消失的一切,都找回來- 透過閱讀,孩子不僅是在認識文字,更是在感受文字所帶來的情感和觸動。 當孩子在「老樹之歌」的故事中找到觸動心靈的一句話時,他的成長和讀書的自信也隨之增長。 希望通過這個小品,讓讀者可以感受到家庭教育的重要性,以及閱讀對孩子成長的意義。
Thumbnail
avatar
Betty
2024-03-15
【#文字背後企劃/找回內心深處的安全感】:安全感是一輩子的自我練習題你也常常在夜深人靜時感到莫名不安?一個人的時候不信任自己能夠陪伴自己?在一段關係裡總是頻頻受到傷害?
Thumbnail
avatar
羽昊/ 日青總編
2023-09-17
在這當文字遊民的好處XDD沒人看 沒有認識的斯文x類 停止腦子思考的中繼站 提煉文筆? 不用跟旁人聊天 自戀式沈浸文章公園 當另一個我 累積能量 心靈無處可去的好所在 夜那麼黑、風那麼大,文字沸點小、燃點大? 文字癌患者的安寧病房
Thumbnail
avatar
Ashley厭世女神(•̀へ •́ ╮ )當一個不普世的狂顛女王🤥Ashley
2023-01-26
當Facebook提高長篇文字的觸擊率,可以將它用作文字發表平台嗎?一個有企圖想將大多數人拉攏到同一個宇宙的社群媒體,勢必不能失去最有可能長時間黏著的讀者!而由此來看,長文的創作者,究竟能不能把「Facebook的粉絲專頁」當作另一個「文字平台」來發表呢?
Thumbnail
avatar
換日線
2022-07-02
文字轉語音TTS如何處理中英夾雜與數字/符號?「文字MP3」的文字正規化(text normalization)規則說明「文字MP3」是如何將一篇包含有中文、英文、數字、符號的文字使用朗讀内容時,能夠用我們口語化、習慣的唸法進行朗讀? 「文字MP3」支援的文字正規化 (text normalization):
Thumbnail
avatar
GPT工作術|與你一起補給工作的AI能量 智慧寫作·聲音創造·法遵合規
2022-04-08
文字轉語音範例音檔(禪修朗讀):「正念的益處、經行(或行禪)」正念的益處 這種快樂源於高貴的情操,能帶來真正的滿足。感官的快樂無法與它相比,而且只要你願意修練,這種快樂唾手可得,你不需要付一分錢就能得到它。 把握主要的掌控法 經行(或行禪) 本範例音檔使用網際智慧文字轉語音技術。
Thumbnail
avatar
GPT工作術|與你一起補給工作的AI能量 智慧寫作·聲音創造·法遵合規
2022-03-01
[Google sheet教學#2] 如何抓上櫃公司股價、自動更新匯率的方式,簡單的文字處 圖1,圖片引用自pexels 2021/07月第三篇付費訂閱文 大綱 1.製作始於自己的投資組合表需要哪些東西? 2.如何抓取上市、上櫃公司股價資訊,有哪些項目可以用? 這系列是付費訂閱文,後面還會有的內容有,有興趣的朋友可以參考,是以完全對google sheet 新手從0開始的基礎教學,每篇教
Thumbnail
avatar
威利財經生活隨筆
2021-07-26
平淡的文字,卻能觸動人心──《解憂雜貨店》 初次閱讀心得作品名稱:《解憂雜貨店》 作者:東野圭吾 出版社:皇冠 售價:350元
Thumbnail
avatar
懵夢
2021-01-23
我們處在一個文字海量的時代在邁入智慧型手機與社群媒體的年代後,相信大家一定有聽過一個論調,就是很多「長輩」都認為,現在的人都很少「寫字」,對於語言/文的掌握不若以往嚴謹。簡單講就是很多字都不知道怎麼寫,或者是寫錯字。 但,事實是這樣嗎?
Thumbnail
avatar
洪啓堯
2019-03-14