【问题标题】:Have COUNTIFS ignore all blank cells (= empty cells and cells containing "")让 COUNTIFS 忽略所有空白单元格(= 空白单元格和包含“”的单元格)
【发布时间】:2015-03-27 01:35:30
【问题描述】:

我想得到一个带有COUNTIFS的公式,比如

=COUNTIF(A1:A3,"<>"&"")

这样,当A1 = 2、A2 = ""、A3 = 空时,它返回 1。

注意事项:

  1. A2 包含一个空字符串,作为公式的结果。 A3 是一个空白单元格,其中没有公式。
  2. 发布的公式返回 2。
  3. 我尝试使用不同数量的双引号。我总是得到 2 个。
  4. 我尝试使用&amp;CHAR(34)&amp;CHAR(34)。我得到 2 个。
  5. How do I get countifs to select all non-blank cells in Excel? 中发布的解决方案是我尝试过的,它返回 2(没用)。
  6. 公式实际上是=COUNTIFS(range1,cond1,range2,cond2),这就是为什么我不能使用类似的东西 =ROWS(A1:A3)-COUNTIF(A1:A3,"")=ROWS(A1:A3)-COUNTBLANK(A1:A3)(请参阅 this)。 range1range2 将来自带有 INDIRECT 的表达式,但这可能不相关。
  7. 我已经使用=SUMPRODUCT(--(expression1),--(ISNUMBER(A1:A3))) 解决了这个问题,但我特别询问使用COUNTIFS 的可能性。在这一点上,数字与文本(例如)的区别并不相关。
  8. Blank空字符串 是“麻烦”的根源(参见,例如,this)。
  9. Excel 本身对于BLANK 的定义有些模糊。在我的示例中,ISBLANK(A2) 返回 FALSE,但 COUNTBLANK(A2) 返回 1
  10. 我对用户 Function 不感兴趣。

【问题讨论】:

  • @pnuts - 根据第 6 点,我将有两个(或更多)条件,所以我想我一定会使用 COUNTIFS(除非可能是一组非常特殊的 ranges和conditions)。我在示例中使用了COUNTIF 来说明这一点。最好没有数组公式,但暂时还可以。谢谢。

标签: excel excel-formula countif nonblank


【解决方案1】:

使用SUMPRODUCT function 计算单元格内容中LEN function 中的SIGN function

    

根据您的示例数据,A1 有一个值,A2 是由公式返回的零长度字符串,A3 是真正的空白。

C2中的公式是,

=SUMPRODUCT(SIGN(LEN(A1:A3)))

【讨论】:

  • 要记住的好选择。但请参阅第 7 点。对此有何想法?
  • 如何在多个条件下使用这个公式?
【解决方案2】:

我遇到了这个确切的问题,我刚刚发现“?*”通配符可以搜索任何一个或多个字符,从而避免了空字符串问题——天才!在此处查看 Jonathan Gawrych 的答案(在所选答案之后发布):

Excel Countif Not equal to string length of zero

不确定这是否适用于 OP,因为看起来 A1 中的值可能需要作为数字而不是字符串处理,但它可能会帮助到达这里寻找文本解析解决方案的其他任何人。

【讨论】:

    【解决方案3】:

    是否可以选择使用 SUM 而不是 COUNTIFS?如果是这样,我发现它对于过滤数据集更加灵活。例如:

    =SUM(IF(NOT(ISBLANK(A1:A3)),IF(NOT(ISTEXT(A1:A3)),1,0),0))

    (作为数组公式输入)。 IF(NOT(ISBLANK(x))... 过滤掉非空白,然后 IF(NOT(ISTEXT(x))... 过滤掉非文本。过滤器中存在的任何内容都通过求和 1 来计数。您可以添加尽可能多的过滤器。如果您只想过滤掉空字符串但包含其他文本条目,您可以使用像

    这样的过滤器

    IF(ISTEXT(x),IF(LEN(x)>0,1,0),0)

    【讨论】: