我使用命令=COUNTA(I31:I)
计算列中的所有非空单元格。列中的单元格包含以下代码行:
=IF(ISNUMBER(D31), "X", "")
结果是单元格是空字符串(不添加""
的行)或包含X
。
现在的问题是COUNTA
计算此过程后的所有单元格,是否为空。如果我删除长命令行,则不计算单元格,它可以正常工作。因此,这个长命令行正在向单元格添加内容,因此即使它看起来是空的,它也会显示 not-empty 。
这是什么线索?我的猜测是我应该使用某种Null
运算符而不是""
来向单元格添加任何内容。
注意:出于某种原因,这似乎适用于之前版本的Google电子表格。
作为潜在的解决方法,我可以通过=COUNTA(I31:I)
专门检查x
来替换=COUNTIF(I31:I;"X")
。但我仍然对COUNTA的问题感到好奇。
如果事实证明我的细胞不是空的,那就足够了#39;对于这个命令,我怎么能让它们完全变空?
答案 0 :(得分:3)
不幸的是,这是Google设计的功能 虽然我不确定为什么它与Excel calculates COUNTA的方式不同。
根据Google Spreadsheet Documentation on COUNTA
:
COUNTA统计数据集中的所有值,包括出现多次的值和文本值(包括零长度字符串和空格)。
意味着“使[单元格]完全为空”的唯一方法是删除整个内容,公式和所有内容。但不要害怕...
假设,您应该可以使用=COUNTIF(A3:A8,"<>"&"")
执行此操作,但Google电子表格不支持 不等于根据以下论坛,COUNTIF function中的运算符:1,2,3
解决方法是根据条件创建一个truthy或falsy数组,并使用SUMPRODUCT来计算这样的truthy值:
=SUMPRODUCT((A3:A8<>"")*1)
您可以追求的另一个选择是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)根本不返回任何内容。