Excel 計算文字出現次數

輸入「Excel 計算文字出現次數」 的關鍵字搜尋結果,通常是使用 COUNTIF 函數。但是 COUNTIF 只適用在欄位值是單值的情況。如果欄位值是複選多值,COUNTIF 函數的計算結果會發生錯誤。解決方式是結合 SUBSTITUTE 函數 和 LEN 函數,才能正確地計算文字出現次數。

Photo by Snufkin on StockSnap

錯誤狀況

D 欄「購買商品」欄位值是複選多值,使用逗號間隔多個欄位值。
COUNTIF 函數的計算文字出現次數的結果錯誤

想要計算 D 欄「購買商品」出現「蘿蔔」的次數,儲存格 I2 公式是

= COUNTIF(資料範圍, "搜尋文字的條件")

= COUNTIF(D:D, "蘿蔔")

COUNTIF 計算結果 2 次,而非預期的 5 次。如下圖,只購買「蘿蔔」的 2 筆紀錄。 

COUNTIF 計算結果 2 次,而非預期的 5 次

但是 D 欄「購買商品」是複選多值,少計算了同時購買蘿蔔跟其他商品的另外 3 筆紀錄。
少計算了同時購買蘿蔔跟其他商品的另外 3 筆紀錄

雖然微軟文件 COUNTIF 函數 說明提到:
您可以在 criteria 中使用萬用字元 (問號 (?) 和星號 (*))。 問號可比對任何單一字元。 星號可比對任何一串字元。 如果您要尋找實際的問號或星號,請在該字元前輸入波狀符號 (~)。 例如,=COUNTIF(A2:A5,"apple?") 會計算所有執行個體"apple"最後一個字母不同的例。

實際加上星號 (*) 的不同搜尋文字條件,計算結果都不符合預期。

= COUNTIF(D:D"蘿蔔*")

= COUNTIF(D:D"*蘿蔔")


解決方式

使用 SUBSTITUTELEN 函數,正確取得文字出現次數

使用 SUBSTITUTE 與 LEN 函數,計算文字出現次數

增加輔助欄 F 欄,計算該筆交易「蘿蔔」出現次數,儲存格 F2 的公式是:

=(D2儲存格的總字數 - D2儲存格扣掉蘿蔔的字數) / 蘿蔔的字數

=(LEN(D2) - LEN(SUBSTITUTE(D2, "蘿蔔", ""))) / LEN("蘿蔔")

再加總全部交易紀錄「蘿蔔」出現次數,儲存格 G2 的公式是:

= SUM(F2:F11)

如果要查找的文字有很多,輔助欄 F 欄會很累贅,可以省略輔助欄改寫:

(1) 適用 Google 試算表的寫法

 =ARRAYFORMULA(SUM((LEN(資料範圍)-LEN(SUBSTITUTE(資料範圍, "蘿蔔", "")))/LEN("蘿蔔"))) 

=ARRAYFORMULA(SUM((LEN(D:D)-LEN(SUBSTITUTE(D:D, "蘿蔔", "")))/LEN("蘿蔔"))) 

(2) 適用 Excel 的寫法

= SUM((LEN(資料範圍)-LEN(SUBSTITUTE(資料範圍, "蘿蔔", "")))/LEN("蘿蔔")) 

= SUM((LEN(D:D)-LEN(SUBSTITUTE(D:D, "蘿蔔", "")))/LEN("蘿蔔"))

上述公式必須以陣列公式的形式輸入,輸入完公式,Windows 版本 Excel 請按下 CTRL+SHIFT+ENTER。 macOS 版本 Excel 經測試,只要輸入 ENTER (return)

使用 ARRAYFORMULA,SUBSTITUTE 與 LEN 函數,計算文字出現次數


👉 如果想要直接動手試試看,請前往線上編輯

參考資料

留言