Excel多条件求和:仅统计首次匹配项(排除A:B重复组合)
解决Excel中按组合去重后求和的问题
你的核心需求是:筛选出company列(A列)为"green"且state列(C列)为"CA"的行,仅对company+ee(A:B列)组合的首次出现项的amount列(D列)求和,预期结果200。
之前用=SUMPRODUCT(--(A2:A11="green"),--(C2:C11="CA"),D2:D11)得到300,是因为没对A:B组合去重,重复计算了green+1234的两行数据。
方法一:SUMPRODUCT结合COUNTIFS实现去重求和
直接修改公式,加入首次出现的判断逻辑:
=SUMPRODUCT(--(A2:A5="green"),--(C2:C5="CA"),--(COUNTIFS(A$2:A2,A2,B$2:B2,B2)=1),D2:D5)
公式拆解:
--(A2:A5="green")和--(C2:C5="CA"):锁定符合基础条件的行--(COUNTIFS(A$2:A2,A2,B$2:B2,B2)=1):通过混合引用(A$2:A2),判断当前行的A:B组合是否是第一次出现(计数为1则是首次)- 最后与D列相乘求和,只保留首次出现的符合条件的amount值
代入你的数据验证:
- 第2行(green+1234):首次出现,加100
- 第3行(green+1235):首次出现,加100
- 第4行(yellow+1236):不符合A=green,跳过
- 第5行(green+1234):非首次出现,跳过
最终求和结果为200,符合预期。
方法二:Excel 365/2021版本用动态数组公式(更简洁)
如果你的Excel支持动态数组,可以用UNIQUE+XLOOKUP组合:
=SUM(XLOOKUP(UNIQUE(FILTER(A2:B5,(A2:A5="green")*(C2:C5="CA"))),A2:B5,D2:D5,"",0,1))
逻辑说明:
FILTER(A2:B5,(A2:A5="green")*(C2:C5="CA")):先筛选出A=green且C=CA的A:B组合UNIQUE(...):提取这些组合中的唯一值XLOOKUP(...):找到每个唯一组合第一次出现对应的D列值SUM:对这些值求和,得到结果200
内容的提问来源于stack exchange,提问作者excel_learning
相关产品推荐
相关产品推荐

