我可以将 IF 语句用作 COUNTIF 函数中的参数吗?

我可以将 IF 语句用作 COUNTIF 函数中的参数吗?

如果有人能帮忙改进标题,那当然是了。我已经为此挣扎了一段时间了……

我正在使用 Excel 分析文件名列表,以查找潜在问题...特殊字符、过长等,然后再通过脚本运行它们。现在,我有一个用于测试条件的列和一个用于计算测试结果出现的次数的 COUNTIF。

考虑:

COL A          COL B                                COL C
filename       =IF(LEN($A1)>200,"LONGNAME","")      =COUNTIF(B1:B10000,"LONGNAME")

我想将其简化为 COUNTIF(anythingInColumn,isLong),而不必创建单独的列来测试某些东西是否“很长”。

考虑:

COL A          COL B                               
filename       =COUNTIF($A,LEN($A>200))

上面的问题是,我没有看到任何明确逐行测试我的条件的代码,当我尝试时,似乎没有隐式的逐行测试。我

这样的事可行吗,或者是否有其他功能可以一步完成此操作?

答案1

您应该能够使用数组公式:在 C1 中输入以下内容,然后按 Ctrl-Shift-Enter:

=SUM(IF(LEN(A1:A10000)>200,1,0))

您需要IF将布尔值转换为 (0,1),然后对SUM它们全部进行计数。(您可以使用A:A显式行号,但可能会更慢。)

答案2

有一种方法,使用SUMPRODUCT将值相加,然后--转换True/False1/0

您的例子中的等式为:

=SUMPRODUCT(--(LEN(A1:A10000)>200))

并且不需要数组公式,因为 sumproduct 需要一个数组。

Excel 将 评估LEN(A1:A10000)>200为 的 10,000 项列表True/False。将 的列表更改
为的列表 将所有 1 相加(没有乘积,因为我们只提供 1 维数组)。--True/False0/1
SUMPRODUCT


请注意,此方法还可用于检查多个条件,并且仅计算两个条件都为真(AND)的项目 - 例如,可以使用以下方法找到具有驱动器号且超过 200 个字符的文件名

=SUMPRODUCT(--(LEN(A1:A10000)>200),--(MID(A1:A10000,2,1)=":"))

如果确实需要检查多个条件,那么两个检查的大小必须相同:

=SUMPRODUCT(--(LEN(A1:A10000)>200),--(MID(A1:A7777,2,1)=":"))

会出错

答案3

=SUM(IF(LEN($A:$A)>200,1,0)) Ctrl + Shft + Enter 应该达到目的。

如果没有,=SUMPRODUCT(--(LEN($A:$A)>200))也同样可以工作。

相关内容