使用带有空值标准和可变范围的COUNTIF函数

8

我在使用COUNTIF函数时遇到了一些奇怪的问题。

请假设以下是需要使用该函数的表格:

A        B
John     Doe
John     Smith
John

最后一个值(B3)是一个空字段。
预期的COUNTIF公式应该只计算A列中存在John的情况下,B列中空值的数量。
我能够成功地做到这一点的唯一方法是显式指定要计数的范围(B1:B3),但是这个公式将在多个工作表上执行,这些工作表并不都具有相同数量的行,因此,如果我仅将B列命名为名称并将名称指定为范围,则无法使用COUNTBLANK,因为它会返回惊人的高结果。
编辑:
所以显然不能使用countif来完成这个任务?我找到的一个解决方法是使用SUMPRODUCT。这是最好的方法吗?
=SUMPRODUCT((September!K1:K16000="John")*(September!L1:L16000=""))
3个回答

11

您可以使用COUNTIFS函数进行多个条件的计数。例如,您可以使用:

=COUNTIFS(A:A,"John",B:B,"")

非常感谢您,我在各种文章中一直读到Excel中没有空值/空白值这样的东西,这让我很烦恼。 - Grace
@Grace 很高兴能帮助到你 ^^ - Jerry
1
如果条件来自空单元格,则此方法似乎无效,因为空白似乎不匹配空白。例如,=COUNTIFS(A:A, D1, B:B, E1) 无法正常工作。解决方法是用“”替换空白,即 =COUNTIFS(A:A, IF(ISBLANK(D1), "", D1), B:B, IF(ISBLANK(E1), "", E1)) - ben
1
另一个解决方法是计算所有包含“*”的答案,然后从没有特定条件的总数中减去它。例如:=COUNTIFS(A:A,"John") - COUNTIFS(A:A,"John",B:B,"*") - Tom
1
@Tom 是的,缺点是这个公式可能会慢两倍,因为你要调用两次countif(一个countif和一个countifs)。对于大量数据,等待时间可能会很长。 - Jerry

2
您可以使用类似以下这样的方法:

代码示例:

=COUNTBLANK(B2:B100000)-COUNTBLANK(A2:A100000)

它计算了B列空单元格和A列空单元格之间的差异。

2

使用=SUM(IF(A1:A3="John",1,0)*IF(ISBLANK(B1:B3),1,0))

这是一个数组公式:编辑完成后,使用Ctrl + Shift + Return而不是只按Return。

诀窍是使用乘法代替AND函数,因为如果将数组字符串比较与ISBLANK混合使用,AND函数会失败。


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