在 COUNTIFS 中使用 OR & AND
Posted
技术标签:
【中文标题】在 COUNTIFS 中使用 OR & AND【英文标题】:Using OR & AND in COUNTIFS 【发布时间】:2014-07-02 13:40:01 【问题描述】:我想在我的COUNTIFS
子句中包含一个"AND"
条件。
类似这样的:
=COUNTIFS(A1:A196;"Yes"or "NO";J1:J196;"Agree")
所以,它应该返回行数,其中:
(A1:A196 is either "yes" or "no") AND (J1:j196 is "agree")
【问题讨论】:
【参考方案1】:您可以将几个 COUNTIF
语句添加在一起:
=COUNTIF(A1:A196,"yes")+COUNTIF(A1:A196,"no")+COUNTIF(J1:J196,"agree")
这将为您提供所需的结果。
编辑
抱歉,误读了问题。尼古拉斯是对的,上面的内容会加倍计算。我没有以正确的方式考虑AND
条件。这是一个可以为您提供正确结果的替代方法,您一开始就非常接近:
=SUM(COUNTIFS(A1:A196,"yes","no",J1:J196,"agree"))
【讨论】:
我认为这个公式不正确,因为它会重复计算列A
为 yes
且列 J
为 agree
的行。
我同意尼古拉斯的观点。
你能在COUNTIFS
函数上使用这样的大括号吗?我正在测试它,它只计算大括号内第一个值的出现次数。
哎呀!漏了一步。更正了上面的公式。
我正在尝试这个,它只对我部分起作用。出于某种原因,无论我做什么,它都只会匹配大括号内的第一项,而不是第二项。【参考方案2】:
您的问题可能有更有效的解决方案,但以下公式应该可以解决问题:
=SUM(COUNTIFS(J1:J196,"agree",A1:A196,"yes"),COUNTIFS(J1:J196,"agree",A1:A196,"no"))
【讨论】:
谢谢,但我正在寻找更有效的解决方案,而不必多次编写计数。 那么你是说这个解决方案不能仅仅因为使用两个COUNTIFS
而对你有用吗?
不,Nicholas,这不是我正在寻找的解决方案。如果您更仔细地查看我的问题文本,您会看到我的伪公式只有一个 COUNTIFS。我的问题更像是我们如何将 OR 用于 AND 子句中的一个条件。
明白。然而,据我所知,这是不可能的。【参考方案3】:
使用数组公式。
=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),"")))
PRESS = CTRL + SHIFT + ENTER。
【讨论】:
感谢您的 CTRL + SHIFT + ENTER【参考方案4】:一种解决方案是求和:
=SUM(COUNTIFS(A1:A196,"yes","no",B1:B196,"agree"))
或者知道它不是countifs,而是sumproduct会在一行中完成:
=SUMPRODUCT(((A1:A196="yes","no")*(j1:j196="agree")))
【讨论】:
【参考方案5】:我发现我必须做一些类似于
的事情=(countifs (A1:A196,"yes", j1:j196, "agree") + (countifs (A1:A196,"no", j1:j196, "agree"))
【讨论】:
欢迎来到 Stack Overflow!请考虑编辑您的帖子,以添加更多关于您的代码的作用以及它为什么会解决问题的解释。大部分只包含代码的答案(即使它正在工作)通常不会帮助 OP 理解他们的问题。【参考方案6】:在更一般的情况下:
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")
【讨论】:
以上是关于在 COUNTIFS 中使用 OR & AND的主要内容,如果未能解决你的问题,请参考以下文章