如果有人能帮忙改进标题,那当然是了。我已经为此挣扎了一段时间了……
我正在使用 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/False
为1/0
。
您的例子中的等式为:
=SUMPRODUCT(--(LEN(A1:A10000)>200))
并且不需要数组公式,因为 sumproduct 需要一个数组。
Excel 将 评估LEN(A1:A10000)>200
为 的 10,000 项列表True/False
。将 的列表更改
为的列表 将所有 1 相加(没有乘积,因为我们只提供 1 维数组)。--
True/False
0/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))
也同样可以工作。