我正在寻找在=countif(range_of_formulas, [criterion])
中使用的标准,该标准将识别公式的非空白结果。
我找到了其中的一些,例如"<>"
,"<>"&""
,"<>"""
,">"""
,"*"
等等(例如,在SO {{ 3}}和here)。
但是,每个标准似乎只适用于某些情况,而不是其他情况,并且在以下情况下都会失败:
here
列A和B包含我的原始数据。 D列显示了您在C列中看到的公式的结果。列F显示countif
使用不同标准(如E列所示)的结果来计算D列中的非空白结果。它们都没有到达正确的数 - 5。
在我的研究中(以及在我编辑以缩小范围之前,在这个问题的答案中)我已经看到了许多可以得到正确数据的变通办法。
但我要问的是,是否有一个标准适用于countif
,或countif
是否无法可靠地计算非空白公式结果?
(或者也许有人可以说它可以或不能在哪些条件下使用)。
答案 0 :(得分:5)
这可以通过在第一个论坛上进行简单更改来强制输出为字符串值来实现(如果您需要使用数值结果执行计算,请将它们乘以1以转换回数字时它们正被使用)
我只是在第一个公式的结果末尾添加了一个空白字符串,并将其包装在括号中以保持高兴:
=(IF(AND(B1=1,ISBLANK(A1)=FALSE),A1,"")&"")
现在,您可以将通配符用于任何字符(?
)和任意长度的字符串(*
),作为达到所需总数5的标准:
=COUNTIF($D$1:$D$8,"?*")
答案 1 :(得分:4)
不,这是不可能的。 COUNTIF使用与普通Excel公式中的比较不同的解释来解析条件。
在双引号内,可以解析开头的比较运算符:=,&gt;,&gt; =,&lt; =,&lt;,&lt;&gt;
之后,一切都是数字或字符串。任何无法解析为数字的内容都将被解析为字符串。然后根据它是数字还是字符串进行比较。
数字比较忽略字符串,字符串比较忽略数字。
&#34;&→3&#34;将计算所有大于3的数字。它忽略所有字符串。
&#34;&以及c&#34;将计算所有大于c的字符串(即以c开头,后跟另一个字符或以更高字符代码开头的任何字符串)。它忽略了所有数字。
&#34;&→3 *&#34;将计算所有大于字符3的字符串。
当您尝试执行&#34;&gt;&#34;&#34;&#34;时,&#34;&#34;用来表示&#34;字符(因为它在公式中的双引号内),所以你在这里实际做的比较是:大于&#34;字符。拉出Unicode图表,你只会看到它!小于&#34;。所以,如果你把!随后是任何事情或&#34;如果你的数据本身,你会少一点。
同样,&#34;&gt;&#34;&#34;&#34;&#34;&#34;只是比较由两个双引号而不是空字符串组成的字符串。
无法将空字符串传递给COUNTIF函数。
您需要另一种解决方案:
更改早期的IF语句,以返回可在COUNTIF语句中测试的nullstring以外的任何值。您甚至可以使用CHAR(1)
来显示不可打印的字符,该字符显示为空白但仍可以在COUNTIF中排除:=COUNTIF(D1:D8,"<>"&CHAR(1))
使用多个COUNTIF来计算字符串数和数字数:=COUNTIF(D1:D8,"?*")+COUNTIF(D1:D8,">0")
(假设只有正数,则使用&gt; 0,否则您还需要添加&lt; = 0)的数字计数
使用其他用户建议的其他功能
答案 2 :(得分:4)
如前所述,并非没有直接帮助。所以;
适应这种情况的最简单方法可能是:
=SUM(COUNTIF($D$1:$D$8,{">0",""}))
或者
=SUM(COUNTIFS($D$1:$D$8,{">0",""}))
将相应添加&amp;给你你的结果。请注意此COUNTIFS的使用方式与您的相比之间的差异。 {}。
的位置发挥自: https://exceljet.net/formula/countifs-with-multiple-criteria-and-or-logic
要使用OR逻辑基于多个条件进行计数,可以将COUNTIFS函数与数组常量一起使用。 默认情况下,COUNTIFS函数应用AND逻辑。当您提供多个条件时,所有条件必须匹配才能生成计数。 一种解决方案是在数组常量中提供多个标准......
答案 3 :(得分:1)
这应该有效:
=(COUNTA(range) - COUNTBLANK(range))
COUNTA - 计算所有包含内容的单元格
COUNTBLANK - 计算所有评估为空白的单元格
但要注意没有内容的单元格,它们会增加COUNTBLANK但不会增加COUNTA,从而使计算脱轨。
答案 4 :(得分:1)
COUNTIFS example,
=COUNTIFS(A1:A8, "<>", B1:B8, 1)
Another SUMPRODUCT example,
=sumproduct(sign(len(d1:d10)))
答案 5 :(得分:1)
这取决于你如何编写公式。
如上所述更改If()公式并使用上面提到的Countif将得到正确答案。
=IF(AND(B1=1,ISBLANK(A1)=FALSE),A1,"|^|")
=COUNTIF(C1:C8,"<>|^|")
或者
如果您无法更改If()公式,则必须将Countif()更改为Sumproduct()以获得正确的结果。
=IF(AND(B1=1,ISBLANK(A1)=FALSE),A1,"")
=SUMPRODUCT(--(TRIM($C$1:$C$8)<>""))
答案 6 :(得分:0)
如果您的公式也返回空白结果,请尝试使用此方法计算非空白的返回值。它适用于数组。
=SUMPRODUCT(N(LEN(A1:A10)>1))