![计算集合中匹配结果的唯一单元格数](https://linux22.com/image/1416321/%E8%AE%A1%E7%AE%97%E9%9B%86%E5%90%88%E4%B8%AD%E5%8C%B9%E9%85%8D%E7%BB%93%E6%9E%9C%E7%9A%84%E5%94%AF%E4%B8%80%E5%8D%95%E5%85%83%E6%A0%BC%E6%95%B0.png)
我在 Excel 中有一列编码数据,如下所示:
a
b
ab
bc
ad
b
ac
我知道我可以用 找到所有包含“a”的单元格实例=COUNTIF(A1:A7,"*a*")
。这样会得到 4。我还可以计算“b”,=COUNTIF(A1:A7,"*b*")
结果是 4。
但是我需要的是计算包含“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
。