在 Excel 中,我有如下数据:
我想编写一个公式来计算 Col1 为“a”或“b”且 Col2 为“c”或“d”的行数。我突出显示了应包括的行。结果应该是 4。
我尝试了几种选择:
(1)使用具有多个可能值的 COUNTIFS。这会返回 2 而不是 4。我不知道为什么
=SUM(COUNTIFS(A2:A7,{"a","b"},B2:B7,{"c","d"}))
(2)使用 COUNTIFS 来计算每个可能的过滤器组合。这种方法可行,但公式很长。如果我添加更多具有更多可能值的过滤器,公式的大小就会激增
=COUNTIFS(A2:A7,"a",B2:B7,"c")+COUNTIFS(A2:A7,"a",B2:B7,"d")+COUNTIFS(A2:A7,"b",B2:B7,"c")+COUNTIFS(A2:A7,"b",B2:B7,"d")
(3) ChatGPT 答案。它返回 0 而不是 4。我从 ChatGPT 得到这个答案。它给了我几个不同的公式,它们会返回 0 或 1。
=SUMIFS(C2:C7, A2:A7, {"a","b","c","d","e","f","g"}, B2:B7, {"b","c","d","e","f","g","h"})
我还想要一个公式,用于对通过此筛选的行的“N”列求和。有人可以帮我实现这个吗?
以下是文本数据
Col1 Col2 N
b c 1
a c 2
a d 3
b d 4
b e 5
c e 6
答案1
当在 COUNTIFS 中使用数组时,如果数组的方向相同(水平与垂直),则会成对执行。
所以:
=SUM(COUNTIFS(A2:A7,{"a","b"},B2:B7,{"c","d"}))
就像做:
=COUNTIFS(A2:A7,"a",B2:B7,"c")+COUNTIFS(A2:A7,"b",B2:B7,"d")
为了获得所有变化,将一个垂直,另一个水平
=SUM(COUNTIFS(A2:A7,{"a","b"},B2:B7,{"c";"d"}))
现在将完成所有四种变化:
现在需要注意的是:这只适用于两个数组。尝试添加第三个数组会使其与另外两个数组之一同步。因此,对两个以上的数组进行或运算将采用不同的公式。
答案2
使用如下公式:
=SUMPRODUCT(($A$2:$A$7="a")+($A$2:$A$7="b"),($B$2:$B$7="c")+($B$2:$B$7="d"))
这样,您可以根据需要使用任意数量的条件。
但是 SUMPRODUCT 比 COUNTIFS 慢。
答案3
我已经测试了很多组合,但是这两个组合没有任何失败,所以我想推荐这两个:
=SUM(IF((A2:A7={"a","b"})+(B2:B7={"c","d"}),1,0))
=COUNTIF($A$2:$A$7,"=a")+COUNTIF($A$2:$A$7,"=b")+COUNTIF($B$2:$B$7,"=c")+COUNTIF($B$2:$B$7,"=d")
- 根据需要调整单元格引用和条件。