試算表搜尋字串的考量點 (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 試算表 】
如果想直接動手作,可以前往線上試算表直接編輯。
留言
張貼留言