我在 Excel 中有一列編碼數據,如下所示:
a
b
ab
bc
ad
b
ac
我知道我可以找到包含“a”的所有單元格的實例=COUNTIF(A1:A7,"*a*")
。這將給我 4 =COUNTIF(A1:A7,"*b*")
。
但是,我需要的是計算包含“a”或“b”的單元格,但是不會重複計算含有兩者的細胞。=COUNTIF(A1:A7,"*a*")+COUNTIF(A1:A7,"*b*")
= 8,但我想要一個 OR 條件,透過不重複計算「ab」來計算 7。
如果這是正規表達式,我可以做類似的事情=COUNTIF(A1:A7,"[ab]")
,但我不能...
更新:如中所述一則評論,這是一個簡化的範例。我的資料集中有 AM,可能需要計算兩個、三個甚至七個不同值的組合,因此我需要一個可擴展的解決方案。
答案1
該解決方案應該作為可擴展的實現,可以輕鬆擴展為其他字串。
=SUMPRODUCT(--(ISNUMBER(FIND("a",A1:A7))+ISNUMBER(FIND("b",A1:A7))>0))
新增另一個字串的範例:
=SUMPRODUCT(--(ISNUMBER(FIND("a",A1:A7))+ISNUMBER(FIND("b",A1:A7))+ISNUMBER(FIND("c",A1:A7))>0))
FIND
其工作原理是在範圍內的每個單元格上運行函數,並使用它ISNUMBER
來確定是否找到匹配項。將每個單元格的結果相加,然後>0
末尾的 指定應對至少與其中一個FIND
s 匹配的任何單元格進行計數。將SUMPRODUCT
所有內容相加得出最終答案。
對於不區分大小寫的匹配,您可以將該FIND
函數替換為SEARCH
。