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))
我想对 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))