Excel 一次搜尋多個關鍵字,使用 SEARCH 與 SUMPRODUCT 函數

Excel 使用 SUMPRODUCT 與 SEARCH 函數一次搜尋多個關鍵字。原本網路文章只能處理布林邏輯 OR 條件,透過 ChatGPT 瞭解公式,再修改成可以用在 AND 與 NOT 條件。

Made with DALL-E 3

網路上有一份文件「如何利用 SUMPRODUCT 一次搜尋多個關鍵字」:

=SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$5,A2)))>0

網頁上沒有任何說明。經詢問 ChatGPT 以及實際測試,上面公式的用途是搜尋「A2」欄位值,如果包含「$D$2:$D$5」儲存格內的任一關鍵字,則回傳 TRUE、如果沒有則回傳 FALSE。

本站「Excel 布林搜尋多個關鍵字」、「Google 試算表 (google sheet) 搜尋一個或多個關鍵字」文章,也是使用 SEARCH 函數,但是沒有使用 SUMPRODUCT 函數。一旦關鍵字多達數十個時,會導致函數變成很長,就會遇到 Excel 儲存格的函數長度限制:8,192 個字元。使用 SUMPRODUCT 函數,就可以避開這個問題。

公式整理與修改

狀況一:文章內容是否包含任一關鍵字 (布林邏輯:OR)

=SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$5, A2)))>0

搜尋「A2」文章欄位值,如果包含「$D$2:$D$5」儲存格內的任一關鍵字,則回傳 TRUE、如果沒有則回傳 FALSE。

狀況二:文章內容是否包含所有關鍵字 (布林邏輯:AND)

=SUMPRODUCT(--COUNT(SEARCH($D$2:$D$5, A2)))=COUNTA($D$2:$D$5)

搜尋「A2」文章欄位值,如果包含「$D$2:$D$5」儲存格內的所有關鍵字,則回傳 TRUE、如果沒有則回傳 FALSE。這裡用到 COUNT 函數,可參考 Excel 布林搜尋多個關鍵字 文章說明。

狀況三:文章內容是否不包含所有關鍵字 (布林邏輯:NOT)

=SUMPRODUCT(INT(COUNT(SEARCH($D$2:$D$5, A2))))=0)

搜尋「A2」文章欄位值,如果不包含「$D$2:$D$5」儲存格內的所有關鍵字,則回傳 TRUE、如果沒有則回傳 FALSE。

公式說明

以下是 ChatGPT 詢問結果,經過編輯與文字修正:

1. SEARCH 函數

  • `SEARCH($D$2:$D$5,A2)` 會在儲存格 A2 (文章) 中尋找範圍 `$D$2:$D$5` (多組關鍵字) 中每一個值的出現位置。
  • 如果找到相符的文字,`SEARCH` 會回傳該文字在 A2 中的起始位置(正整數);如果沒有找到,則回傳 #VALUE! 錯誤值。

2. ISNUMBER 函數

  • `ISNUMBER(SEARCH($D$2:$D$5,A2))` 會檢查 `SEARCH` 函數的回傳值是否為數字。
  • 對於每一個在 A2 中找到的相符文字,它會回傳 `TRUE`(因為 `SEARCH` 回傳數字);對於未找到的情況,它會回傳 `FALSE`(因為 `SEARCH` 回傳 #VALUE! 錯誤值)。

3. 雙負號 (`--`):

  • `--ISNUMBER(SEARCH($D$2:$D$5,A2))` 會將 `TRUE` 和 `FALSE` 值轉換為 1 和 0。
  • 這是因為在 Excel 中,`TRUE` 被當作 1,`FALSE` 被當作 0。
  • 備註:也可以使用 INT 函數,將 `TRUE` 和 `FALSE` 值轉換為 1 和 0。

4. SUMPRODUCT 函數

  •  `SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$5,A2)))` 則將轉換後的 1 和 0 加總。
  • 這意味著它會計算 A2 中有多少次與 `$D$2:$D$5` 範圍中任何一個值相符的情況。

5. 比較運算符 (`>0`):

  • 最後,`>0` 用來檢查 `SUMPRODUCT` 的結果是否大於 0。
  • 如果是,整個公式的結果為 `TRUE`(表示 A2 至少包含範圍 `$D$2:$D$5` 中的一個值);如果不是,則結果為 `FALSE`。
原本公式目的達到布林邏輯的 OR,可以修改此處邏輯條件,達到 AND 或 NOT 的效果。

參考資料

  1. EXCEL – 如何利用 SUMPRODUCT 一次搜尋多個關鍵字
  2. Excel 的規格及限制 - Microsoft 支援服務
  3. SEARCH 與 SEARCHB 函數 - Microsoft 支援服務
  4. IS 函數 - Microsoft 支援服務
  5. SUMPRODUCT 函數 - Microsoft 支援服務

留言