计算集合中匹配结果的唯一单元格数

计算集合中匹配结果的唯一单元格数

我在 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末尾的 指定应计算与至少一个FINDs 匹配的任何单元格。SUMPRODUCT将所有这些相加以得出最终答案。

对于不区分大小写的匹配,您可以用 替换该FIND函数SEARCH

相关内容