Excel 或 Google 試算表搜尋字串的方法比較

試算表搜尋字串的考量點 (1) 英文是否區分大小寫、(2) 是否是完整英文單字,例如搜尋 app 時,結果不要包含 apple、(3) 中英文混合。

Photo by Burst from StockSnap

更新版文章Google 試算表 (google sheet) 搜尋一個或多個關鍵字 

解決方式

情境1:關鍵字是中文字、或比較長的英文單字

可使用 FIND (區分大小寫) 或 SEARCH 函數 (不區分大小寫),搭配 COUNT 函數。

  • 不分大小寫:可以,使用 SEARCH 函數不區分大小寫
  • 完整英文單字:不可以
  • 中英文混合多組關鍵字:可以
  • 適用的試算表軟體:Microsoft Excel、LibreOffice Calc、Google 試算表

例 1:搜尋 A2 儲存格內容是否包含鮭魚,如果包含回傳 1、不包含則回傳 0

= INT(OR(COUNT(SEARCH("鮭魚", A2))))

例 2:搜尋 A2 儲存格內容是否包含鮭魚或 Salmon,如果包含回傳 1、不包含則回傳 0

= INT(OR(COUNT(SEARCH("鮭魚", A2)), COUNT(SEARCH("Salmon", A2))))

因為 Salmon 單字比較長,比較不會遇到想要搜尋 app 但是結果包含 apple 的狀況。上述公式,在 Microsoft Excel 等試算表軟體也可以支援。詳細說明,請見文章:Excel 布林搜尋多個關鍵字


情境2:關鍵字是中文字、或比較短的英文單字

使用 Google 試算表特有的 REGEXMATCH 函數

  • 不分大小寫:REGEXMATCH 區分大小寫,需要額外加上 (?i) 修飾語
  • 完整英文單字:可以,英文需要前後加上單字邊界  \b 符號
  • 中英文混合多組關鍵字:可以
  • 適用的試算表軟體:Google 試算表

例 3:搜尋 A2 儲存格內容是否包含 App,如果包含回傳 1、不包含則回傳 0

= INT(REGEXMATCH(B2, "(?i)(\bApp\b)"))

例 4:搜尋 A2 儲存格內容是否包含 APP 或 行動應用程式,如果包含回傳 1、不包含則回傳 0

= INT(REGEXMATCH(B2, "(?i)(\bApp\b|行動應用程式)"))

Google 試算表 REGEXMATCH 函數文件說明提到「Google 試算表支援 RE2,但不支援符合規則的 Unicode 字元類別。」RE2 語法不區分大小寫,需要加上 (?i) 修飾語,才能讓搜尋結果可以包含 app 或 App 等狀況。

避免結果除了 app 還包含 apple,需要在英文關鍵字的前後要加上「單字邊界」(word boundary) \b 。要注意中文關鍵字不需要加上「單字邊界」。關於「單字邊界」說明,請見 解決英文字的搜尋:搜尋 app 而不是 apple 【Google 試算表 】


如果想直接動手作,可以前往線上試算表直接編輯。


參考資料

留言