为什么= SUMIF(C5:C19,NOT(ISFORMULA(C5:C19)))返回零?

时间:2019-05-09 11:14:05

标签: excel excel-formula

我有一个电子表格可以跟踪我的时间。最初,每个单元格都填充有公式,即=IF(WORKDAY(B24-1,1,holidays2019)=B24,OFFSET(C24,-1,2),0) 然后随着月的进展,我输入我的实际时间。

  • 在以下摘录中,输入了直到5/10/2019的所有值。
  • 公式=SUMIF(C5:C19,NOT(ISFORMULA(C5:C19)))显示为零。我不明白为什么这行不通。
  • 感谢您的帮助!电子表格中的B列对应于下面显示的日期,C列对应于时间条目。
  • 预期结果:48.9

enter image description here

3 个答案:

答案 0 :(得分:3)

=SUMPRODUCT(J6:J20,--NOT(ISFORMULA(J6:J20)))

此解决方案的关键是NOT()前面的-。由数学运算符处理的布尔值将转换为1或0。-,+ 0,-0,* 1,/ 1将全部用于完成转换。因此,现在您得到的是一个值数组,您可能希望将其总和乘以1和0的数组来表示所需的值。 1是手动输入,0是您的公式输入。

POC

现在,SUMPRODUCT执行类似数组的计算。因此,请避免在其中使用完整的列/行引用,否则您将得到大量多余的计算结果。调整答案中的范围以适合您的需求。

答案 1 :(得分:2)

这是=SUMIF

中“条件”的MSDN定义
  

标准必需。以数字,表达式,   单元格引用,文本或定义哪些单元格将要使用的函数   添加。例如,标准可以表示为32,“ >32”,B5"32",   "apples"TODAY()

     
    

重要:任何文本条件或任何包含逻辑或     数学符号必须用双引号(“)引起来。     如果条件是数字,则不需要双引号。

  

所以,您的SUMIF返回0的原因是,因为所有单元格都不符合条件,因为它们返回一个数字,同时又期望FALSE

这里的另一个问题是,ISFORMULA将返回TRUE,即使一个范围包含一个公式而其余所有都不包含。因此,基本上,您需要分别向下拖动每个单元格的公式并仅在值为TRUE

时对其求和

从单元格D1开始:

=ISFORMULA(B1)

enter image description here

然后您可以简单地将它们与您提供的公式相加。

=SUMIF(D1:D16,TRUE,C1:C16)

enter image description here

很显然,您可以隐藏D列以使其在美学上更令人愉悦。

答案 2 :(得分:1)

您的公式失败,因为您要匹配的条件为TRUE / FALSE。显然,C5:C19中的值不包含任何布尔值,因此总和为0。

要解决此问题,您可以在单元格D5及以下添加正确的条件:=ISFORMULA(C5) 然后使用=SUMIF(D5:D19,FALSE,C5:C19)对C列中的值求和。