我正在寻找一个在=countif(range_of_formulas, [criterion])
中使用的标准,它将识别公式的非空白结果。我已经找到了很多这样的东西,比如"<>"
、"<>"&""
、"<>"""
、">"""
、"*"
等等(例如在SO here和here上)。但是,每个标准似乎只在某些情况下起作用,而在其他情况下则不起作用,在以下情况下,它们都会导致失败:
列A和B有我的原始数据。D列给出了你在C栏中看到的公式的结果。F列显示了countif
的结果,使用不同的标准(如E列所示)来计算D列中的非空白结果。
在我的研究中(在对这个问题的回答中,在我编辑以缩小范围之前),我看到了许多可以得到正确计数的解决方法。但是我要问的是,是否有一个在countif
中工作的标准,或者countif
不能可靠地计算非空白公式的结果?
(或者有人可以说在什么条件下可以或不能使用它)。
发布于 2017-09-07 10:07:27
这可以通过在第一个论坛上进行简单的更改来实现,以强制输出为字符串值(如果需要用数值结果进行计算,则将其乘以1,在使用时将其转换为数字)。
我只是将一个空字符串加入到第一个公式的结果末尾,并将其封装在括号中,以使excel感到高兴:
=(IF(AND(B1=1,ISBLANK(A1)=FALSE),A1,"")&"")
现在,您可以将通配符用于任何字符(?
)和任意长度的字符串(*
)作为您的标准,以达到您想要的总数5:
=COUNTIF($D$1:$D$8,"?*")
发布于 2017-09-07 06:01:21
不这是不可能的。COUNTIF使用与常规Excel公式中的比较不同的解释来解析该条件。
在双引号中,可以解析开头的比较运算符:=,>,>=,<=,<,<>
在那之后,一切要么是数字,要么是字符串。任何不能被解析为数字的东西都将被解析为字符串。然后根据它是数字还是字符串执行比较。
数字比较忽略字符串,字符串比较忽略数字。
"> 3“将计数大于3的所有数字。它忽略所有字符串。
">c“将计数所有大于c的字符串(即以c开头的任何字符串后面跟着另一个字符或以较高字符代码开头的任何字符串)。它忽略了所有的数字。
"> 3 *“将计数所有大于字符3的字符串。
当您尝试执行“>”时,"“用于表示”字符“(因为它位于公式中的双引号内),因此您在这里所做的比较是:所有大于”字符“的内容。拉出一个Unicode图表,你只会看到它!所以,如果你把任何东西跟在后面,或者“如果你的数据本身,你就会少得到一个计数。”
类似地,“>”只是比较由两个双引号组成的字符串,而不是空字符串。
不可能将空字符串传递给COUNTIF函数。
您需要另一个解决方案,要么:
CHAR(1)
显示一个不可打印的字符,该字符显示为空白,但仍然可以排除在COUNTIF:=COUNTIF(D1:D8,"<>"&CHAR(1))
中。=COUNTIF(D1:D8,"?*")+COUNTIF(D1:D8,">0")
(>0是假设只有正数),否则还需要添加属于<=0的数字计数。发布于 2017-09-12 06:34:08
如前所述,没有帮助不是直接的。是这样的;
可能最容易适应这种情况的方法可能是:
=SUM(COUNTIF($D$1:$D$8,{">0",""}))
或
=SUM(COUNTIFS($D$1:$D$8,{">0",""}))
这将相应地添加&给你的结果。注意这个COUNTIFS与您的COUNTIFS的不同之处& {}的位置。
来自:https://exceljet.net/formula/countifs-with-multiple-criteria-and-or-logic
若要基于使用OR逻辑的多个条件进行计数,可以使用COUNTIFS函数和一个数组常量。默认情况下,COUNTIFS函数应用和逻辑。提供多个条件时,所有条件必须匹配才能生成计数。一种解决方案是在数组常量中提供多个准则.
https://stackoverflow.com/questions/45657896
复制相似问题