首页 > 解决方案 > 当至少一行满足条件时对所有行求和

问题描述

我有一个数据库如下:

当至少一个组的“包含”标志为 Y 时,我在尝试按组对所有数量求和时遇到问题;也就是说:如果第 3 组中的至少一行有 Y ,则将第 3 组中的所有行相加,不管其余的是否不包括在内。

输出应该是这样的:

预期产出

谢谢!

标签: excel

解决方案


您将需要使用数组函数来解决这个问题。要输入和排列函数,请像往常一样键入一个函数,然后按 Ctrl+Shift+Enter 而不是 Enter。(Apple 键盘不同,但我没有 Apple。)

我将解释如何将函数组合在一起,然后最后将它们组合在一起。

首先,我想要一组组编号,其中包含的列中至少有一个“Y”。该数组由IF(B2:B14="Y",A2:A14,0). 结果将{0,0,0,0,0,0,3,...etc}在示例案例中。

MATCH(A2:A14,IF(B2:B14="Y",A2:A14,0),0)接下来,我使用该函数标记在组编号列表中具有条目的每个组行。

由于它使用完全匹配,因此在没有匹配时会产生错误。ISERROR(MATCH(A2:A14,IF(B2:B14="Y",A2:A14,0),0))没有匹配时给我一个真,有匹配时给我一个假,所以我否定它。NOT(ISERROR(MATCH(A2:A14,IF(B2:B14="Y",A2:A14,0),0)))

另一个 IF 将其转换为 1 或 0。 IF(NOT(ISERROR(MATCH(A2:A14,IF(B2:B14="Y",A2:A14,0),0))),1,0)

最后,我使用 SUMPRODUCT 将其与 Quantity 结合在一起: =SUMPRODUCT(C2:C14,IF(NOT(ISERROR(MATCH(A2:A14,IF(B2:B14="Y",A2:A14,0),0))),1,0))

同样,请记住使用 Ctrl+Shift+Enter 来完成这项工作。

在 Excel 2013 中测试,它工作正常。


推荐阅读