在 SUMPRODUCT 中使用 OR 条件

在 SUMPRODUCT 中使用 OR 条件

我有三列数据 - 一个总和列(A)以及构成总和的两列(BC)。有时,只填写B和列中的一列;偶尔和列都为空白。CBC

我想要对列进行求和A(即总计),仅有的B当列和/或中有数据时C。因此,我希望以下内容能够奏效:

=SUMPRODUCT(--((B2:B10<>"")+(C2:C20<>"")),A2:A10)

但问题是,如果 B 列和 C 列中都有数据,则形成的数组(B2:B10<>"")+(C2:C10<>"")总和将为 2,并且前面的操作--不会将其转换为 a TRUE(例如{1,1,0,1,0,1,1,1,0} + {1,0,1,1,0,1,1,0,1} = {2,1,1,2,0,2,2,1,1}),然后将最终数组与列中的值相乘A,从而将值 1、4、6 和 7 加倍。

这看起来有点奇怪!我该如何让它正常运行?!

答案1

你可以做这样的事情:

=SUMPRODUCT($A$2:$A$11*($B$2:$B$11&$C$2:$C$11<>""))

这个想法是,只有当和都是空白时,B和的连接才是空白。C

答案2

啊哈-我需要这个SIGN功能:

=SUMPRODUCT(A2:A10,SIGN((B2:B10<>"")+(C2:C10<>"")))

我仍然觉得很奇怪,就 SUMPRODUCT 而言,TRUE + TRUE = 2。并且 2 在--发挥作用时不仅仅被计算为 TRUE。

答案3

我认为您可能要考虑=SUMIFS()功能。

您的条件可以重写为:

  • 条件 1:B 列已填写,C 列为空白;或
  • 条件 2:B 列为空白,C 列已填写;或
  • 情况3:B列和C列均已填写。

由于这 3 个条件是互相排斥的,因此复杂度SUMPRODUCT本质上是=SUMIF(Condition 1)+SUMIF(Condition 2)+SUMIF(Condition 3)。重写为SUMIFS

=SUMIFS(A2:A10,B2:B10,"<>",C2:C10,"")+SUMIFS(A2:A10,B2:B10,"",C2:C10,"<>")+SUMIFS(A2:A10,B2:B10,"<>",C2:C10,"<>")

从性能角度来看,SUMPRODUCT如果有大量行需要汇总,则此解决方案可能比使用更好。

相关内容