我们想要统计某列中包含文本的单元格数量,如下图1所示。
图1
有一些附加条件:
在图1所示的示例中,满足条件的文本单元格共5个。
理解Excel将什么考虑为“空”
需要弄明白的是,空字符串与空单元格不同。空单元格中没有任何内容,空字符串是不显示任何结果的公式的结果。这通常是通过使用两个双引号来实现的,它们之间没有任何内容:
=IF(A9="Ok",C9,"")
两个双引号之间被称为“空文本”,在单元格中不会显示什么但会作为数据被统计。
如果使用ISBLANK函数测试包含空文本的单元格,返回的结果将是FALSE,这意味着Excel不会将空文本作为真正的空单元格。
编写公式
我们使用COUNTIF函数来进行统计,仍以图1所示的示例,统计的单元格区域为B4:B14。
通常,对于COUNTIF函数的条件判断使用“不等于”(即“<>”),但是在本示例中,我们将反转小于/大于符号的顺序,写作“><”,公式如下:
=COUNTIF(B4:B14,"><")
该公式仅统计了包含文本的单元格,忽略了空单元格和空字符串单元格。结果如下图2所示。
图2
这个公式得出了正确的结果,然而它怎么理解?
因为,我们使用通常的公式:
=COUNTIF(B4:B14,"<>")
或
=COUNTIF(B4:B14,"?*")
都不能得出正确的结果,如下图3所示。
图3
也许,你可能会想使用LEN函数来测试单元格的长度,从而忽略空单元格或空字符串单元格,如下所示:
=SUMPRODUCT(--(LEN(B4:B14)>0))
然而,对于图1所示的示例来说,返回的结果是7,因为它统计了数字单元格。当然,我们可以再添加一些公式内容,剔除数字单元格:
=SUMPRODUCT(--(LEN(B4:B14)>0))-SUMPRODUCT(--ISNUMBER(B4:B14))
但公式没有
=COUNTIF(B4:B14,"><")
简洁。
然而,这个公式的运作原理是什么呢?
注:本文学习整理自www.xelplus.com,供有兴趣的朋友参考。