微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Excel SUMPRODUCT 和动态文本条件

如何解决Excel SUMPRODUCT 和动态文本条件

我正在尝试对具有某些动态条件的行进行求和。我有这样的行:

enter image description here

A 只能是一个值,K 可以有多个 OR 值。最后M要相加。

我尝试使用 SUMPRODUCT() ,它适用于 A 列但不适用于 K。我正在寻找的是这样的:

=SUMPRODUCT(--(!$A$2:$A$20000="AA")*--(!$K$2:$K$20000="AA" OR "BB")*$M$2:$M$20000)

我知道我可以先执行 ="AA" 然后再执行 ="BB",但我需要根据其他单元格使 "AA" 和 "BB" 保持动态。并且参数的数量是不同的。我试过 {"AA";"BB"} 但我知道这不起作用,因为匹配需要在同一行。

能不能实现?

非常感谢!

解决方法

将 SUMIFS 与 SUMPRODUCT 包装器一起使用:

=SUMPRODUCT(SUMIFS($M$2:$M$20000,$A$2:$A$20000,"AA",$K$2:$K$20000,{"AA","BB"}))
,
=SUMPRODUCT(($A$2:$A$20000="AA")*(($K$2:$K$20000="AA")+($K$2:$K$20000="BB"))*$M$2:$M$20000)

注意:

  • 由于您要对数组进行乘法/相加,因此无需包含双一元
  • 我不知道为什么您的示例公式中有 !
  • 要返回 ORTRUE;FALSE 数组,我们添加。

您的评论仍然没有清楚地解释您正在制作的动态内容。

但是要为列 OR 创建动态 K,包括对列 A 的测试和对列 M 求和,您可以执行以下操作:

对于 K 列,让我们假设您可能的 OR 是在 F2:F10 范围内单独输入的

=SUMPRODUCT(MMULT(--($K$2:$K$20000=TRANSPOSE($F$2:$F$10)),--(ROW($F$2:$F$10)>0))*($A$2:$A$20000="AAA")*$M$2:$M$20000)

矩阵乘法将产生一列 19,999 条目,如果 OR0 不匹配,则匹配为 1。

>

有关此应用程序中 MMULT 函数的信息,请参阅 How to do a row-wise sum in an array formula in Excel?

在上面的公式中,OR范围(F2:F10)中的“空白”也将匹配K列中的空白条目。因此可以想象,如果K和F中存在空白并且A 列中的 AAA 和 M 列中可能返回错误结果的值。

为了避免这种可能性,我们可以使用动态公式来调整我们输入 OR 值的 F 列的大小:

=INDEX($F$2:$F$10,1):INDEX($F$2:$F$10,COUNTA($F$2:$F$10))

将仅返回列 F 中非空白的值(假设列中没有空白)

所以:

=SUMPRODUCT(MMULT(--($K$2:$K$20000=TRANSPOSE(INDEX($F$2:$F$10,COUNTA($F$2:$F$10)))),--(ROW(INDEX($F$2:$F$10,COUNTA($F$2:$F$10)))>0))*($A$2:$A$20000="AAA")*$M$2:$M$20000)

鉴于此数据:

enter image description here

最后一个公式将返回值 5M2,M3,M7 的总和)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。