Excel 如果不是空字符串则求和

Excel Sum if not Null String

我想对 B 列中与 A 列中非空单元格相对应的所有单元格求和。但是,在 Excel 中,术语 "not empty" 有点模棱两可:如果单元格包含公式,但结果是空字符串,即 =IF(1=0,1,"") ,它被认为不是空的,即使结果基本上是空的。

但是,我想排除这样的单元格。

首先要尝试的显然是

=SUMIF(A:A,"<>",B:B)

但这行不通,因为运算符 <> 仅表示单元格为空,如果它恰好是:空。如果其中有一个公式,例如 =IF(1=0,1,""),它被认为是 "not empty",如上所述。

在我的 Google 冒险中,我还了解到“=”是上面公式中“<>”的逆运算,但据我所知,这对我没有帮助。

让我的问题更具挑战性的是,我想在 B 列中包含与 A 列中的文本和数字条目相对应的单元格...

我可以想到 "work around" 的各种方法,但实际上我正在寻找一种解决方案,我不必在数据中添加另一列,并且可以按原样保留数据。

谢谢!

我同意 COUNTIF(S)/SUMIF(S) 的行为对于空字符串来说有点令人沮丧。

你可以试试:

=SUM(SUMIF(A:A,{"?*",">=0"},B:B))

如果 A 列中的数字严格非负,或者,如果不是:

=SUM(SUMIF(A:A,{"?*",">=0","<0"},B:B))

或者您可以切换到 SUMPRODUCT,它不会受到这种空字符串处理不明确的影响:

=SUMPRODUCT(0+(A1:A15<>""),B1:B15)

尽管它有一个缺点,与 COUNTIF(S)/SUMIF(S) 不同,您不能在不损害性能的情况下任意引用任意数量的单元格(因此我选择了上行引用15): 事实上,在 SUMPRODUCT 中使用整个列引用是一个灾难性的想法。

此致

我试图用 CUBEVALUE 公式做一些类似的事情,它可以 return "" 而不是 0。

为了使 SUM 和加法 (+) 起作用,我使用 =VALUE("0" & CUBEVALUE(uglyforumlahere)) 而不是使用 IF 语句来检查 CUBEVALUE(uglyforumlahere)) 是否计算为"" 如果没有,则必须重复 CUBEVALUE(uglyforumlahere))

我也在那里扔了一个IFNA(),所以最终结果是=VALUE("0" & IFNA(CUBEVALUE(uglyforumlahere),0))