COUNTA在新的Google表格中没有像我期望的那样工作

时间:2014-07-03 18:06:31

标签: google-sheets countif

我使用命令=COUNTA(I31:I)计算列中的所有非空单元格。列中的单元格包含以下代码行:

=IF(ISNUMBER(D31), "X", "")

结果是单元格是空字符串(不添加""的行)或包含X

现在的问题是COUNTA计算此过程后的所有单元格,是否为空。如果我删除长命令行,则不计算单元格,它可以正常工作。因此,这个长命令行正在向单元格添加内容,因此即使它看起来是空的,它也会显示 not-empty

这是什么线索?我的猜测是我应该使用某种Null运算符而不是""来向单元格添加任何内容。

注意:出于某种原因,这似乎适用于之前版本的Google电子表格。

作为潜在的解决方法,我可以通过=COUNTA(I31:I)专门检查x来替换=COUNTIF(I31:I;"X")。但我仍然对COUNTA的问题感到好奇。

如果事实证明我的细胞不是空的,那就足够了#39;对于这个命令,我怎么能让它们完全变空?

2 个答案:

答案 0 :(得分:3)

不幸的是,这是Google设计的功能 虽然我不确定为什么它与Excel calculates COUNTA的方式不同。

根据Google Spreadsheet Documentation on COUNTA

  

COUNTA统计数据集中的所有值,包括出现多次的值和文本值(包括零长度字符串和空格)。

意味着“使[单元格]完全为空”的唯一方法是删除整个内容,公式和所有内容。但不要害怕...

一些解决方法:

  1. 假设,您应该可以使用=COUNTIF(A3:A8,"<>"&"")执行此操作,但Google电子表格不支持 不等于根据以下论坛,COUNTIF function中的运算符:123

  2. 解决方法是根据条件创建一个truthy或falsy数组,并使用SUMPRODUCT来计算这样的truthy值:

    =SUMPRODUCT((A3:A8<>"")*1)
    
  3. 您可以追求的另一个选择是write a custom function并将其添加到云端硬盘 实际上这很容易实现。转到工具&gt;脚本编辑器并添加以下脚本:

    /**
     * Works like COUNTA except does not include null strings
     *
     * @param {cellRange} myArray The value or range to consider when counting.
     * @return Returns the a count of the number of values in a dataset.
     * @customfunction
     */
    function CountNotBlank(myArray) {
      var output = 0;
      for (i = 0; i < myArray.length; i++) { 
        if (myArray[i] != "") {
          output += 1
        }
      }
      return output;
    }
    

    然后像这样使用:

    =CountNotBlank(I31:I)
    

答案 1 :(得分:1)

我会尝试:= IF(ISNUMBER(D31),&#34; X&#34;,iferror(1/0))

我被告知iferror(1/0)根本不返回任何内容。