SUMPRODUCT函數功能強大,與其他函數配合,往往能解決很多問題。本文介紹的技巧將是SUMPRODUCT函數與COUNTIF函數組合,統計單元格中的單詞或句子中出現的指定的字符列表中的字符的個數。
如下所示,在單元格B3中,共出現了字符/單詞列表中的“a”、“b”、“f”共3個字符;在單元格B4中,字符/單詞列表中的所有4個字符都出現了;其他單元格依此類推。
在單元格C3中,使用的公式是:
=SUMPRODUCT(COUNTIF(B3,”*”&$E$3:$E$6&”*”))
下拉至單元格C9。
下面,我們來看看這個公式的運行原理。
公式中的主要部分是:
COUNTIF(B3,”*”&$E$3:$E$6&”*”)
我們知道,COUNTIF函數的語法:COUNTIF(Range, Criteria),將遍歷參數Range指定的區域/數組,統計其中滿足參數Criteria指定的條件的數據的數量。在示例中,參數Range的值為:
B3
而參數Criteria指定的值為:
“*”&$E$3:$E$6&”*”
是*與單元格區域E3:E6中單元格值首尾連接。這里插入了通配符“*”,可以匹配含有單元格區域E3:E6中的值的數據。
SUMPRODUCT函數在這里的一個重要作用就是,強制將參數Criteria指定的值轉換成數組。然后,COUNTIF函數就在單元格B3中查找前面或者后面與E3:E6中的字符相連的字符出現的次數。
COUNTIF(B3,”*”&$E$3:$E$6&”*”)
可解析為:
COUNTIF(B3, {“*a*”;”*b*”;”*f*”;”*d*”})
可解析為:
COUNTIF(“abcefgh”,{“*a*”;”*b*”;”*f*”;”*d*”})
得到:
{1;1;1;0}
將其傳遞給SUMPRODUCT函數:
=SUMPRODUCT(COUNTIF(B3,”*”&$E$3:$E$6&”*”))
即:
=SUMPRODUCT({1;1;1;0})
在僅提供給SUMPRODUCT函數一個數組時,將只是簡單地將數組中的元素相加,即得到結果:
3