在COUNTIFS中使用OR和AND

16

我想在我的 COUNTIFS 子句中为其中一个条件添加一个 "AND" 条件。

像这样:

=COUNTIFS(A1:A196;{"Yes"or "NO"};J1:J196;"Agree")

因此,它应该返回符合以下条件的行数:

 (A1:A196 is either "yes" or "no") AND (J1:j196 is "agree")
6个回答

27

您只需将几个COUNTIF语句相加:

=COUNTIF(A1:A196,"yes")+COUNTIF(A1:A196,"no")+COUNTIF(J1:J196,"agree")

这将为您提供所需的结果。

编辑

抱歉,我读错了问题。 尼古拉斯是正确的,上面的做法会重复计算。 我对右侧的AND条件没有思考清楚。 这里提供一种替代方案,应该可以给您正确的结果,而您在第一次尝试时已经非常接近:

=SUM(COUNTIFS(A1:A196,{"yes","no"},J1:J196,"agree"))

3
我认为这个公式是不正确的,因为它会重复计算那些 A 列为 yesJ 列为 agree 的行,例如。 - Nicholas Flees
我同意尼古拉斯的观点。 - Sammy
4
您能在 COUNTIFS 函数中使用括号吗?我正在测试它,但它只会计算括号中第一个值的出现次数。 - Nicholas Flees
糟糕!错过了一步。已在上方更正公式。 - tmoore82
或者说当你使用不相等符号时,它可能会出现严重错误。 - RobLife
显示剩余6条评论

3

您的问题可能有更高效的解决方案,但是以下公式应该可以解决:

=SUM(COUNTIFS(J1:J196,"agree",A1:A196,"yes"),COUNTIFS(J1:J196,"agree",A1:A196,"no"))

谢谢,但是确切地说我正在寻找一种更高效的解决方案,而不是不得不多次编写countifs。 - Sammy
那么你是说基于使用两个 COUNTIFS,这个解决方案对你来说不起作用? - Nicholas Flees
1
不是的,Nicholas。这不是我要找的解决方案。如果你仔细看一下我的问题文本,你会看到我的伪公式只有一个COUNTIFS。我的问题更像是如何在AND子句中使用OR作为其中一个条件。 - Sammy
明白了。据我所知,这是不可能的。 - Nicholas Flees

2
在更一般的情况下:
N( A union B) = N(A) + N(B) - N(A intersect B) 
= COUNTIFS(A1:A196,"Yes",J1:J196,"Agree")+COUNTIFS(A1:A196,"No",J1:J196,"Agree")-A1:A196,"Yes",A1:A196,"No")

0
一种解决方案是进行求和:
=SUM(COUNTIFS(A1:A196,{"yes","no"},B1:B196,"agree"))

或者知道不是countifs,而是sumproduct可以在一行中完成:

=SUMPRODUCT(((A1:A196={"yes","no"})*(j1:j196="agree")))

-1

使用数组公式。

=SUM(COUNT(IF(D1:D5="Yes",COUNT(D1:D5),"")),COUNT(IF(D1:D5="No",COUNT(D1:D5),"")),COUNT(IF(D1:D5="Agree",COUNT(D1:D5),"")))

按下 CTRL + SHIFT + ENTER 键。


谢谢使用 CTRL + SHIFT + ENTER - Sandeep C

-1

我发现我必须做一些类似的事情

=(countifs (A1:A196,"yes", j1:j196, "agree") + (countifs (A1:A196,"no", j1:j196, "agree"))

欢迎来到 Stack Overflow!请考虑编辑您的帖子,添加更多关于代码的解释以及为什么它会解决问题的说明。一个主要只包含代码的答案(即使它有效)通常不会帮助提问者理解他们的问题。 - SuperBiasedMan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接