Excel:筛选列A后按列B唯一值求和列C的结果异常问题
解决筛选A列匹配E2后对B列唯一值对应C列求和的问题
你之前的公式SUM(UNIQUE(FILTER(C:C, (B:B)*(A:A=E2))))出错的核心原因是:它先筛选出A=E2且B非空的C列值,再对C列去重求和——这相当于把重复的C值只算一次,但你的需求是对B列的唯一值对应的C列值求和,哪怕不同的B对应相同的C,也要分别计入。
根据你的需求,这里提供两种场景的正确公式:
场景1:每个B列唯一值对应唯一的C列值
如果同一个B值对应的C值始终一致,使用以下公式:
=SUM(XLOOKUP(UNIQUE(FILTER(B:B, A:A=E2)), B:B, C:C))
- 分步解释:
FILTER(B:B, A:A=E2):筛选出A列等于E2的所有B列值UNIQUE(...):提取上述结果中的B列唯一值XLOOKUP(...):为每个B列唯一值匹配对应的C列值SUM(...):对匹配到的C列值求和
场景2:同一个B列值对应多个C列值,需按B分组求和
如果同一个B值下有多个不同的C值,需要先对每个B组的C值求和,再汇总结果,使用以下公式:
=SUM(SUMIFS(C:C, A:A, E2, B:B, UNIQUE(FILTER(B:B, A:A=E2))))
- 分步解释:
UNIQUE(FILTER(B:B, A:A=E2)):提取A=E2时的B列唯一值SUMIFS(C:C, A:A, E2, B:B, ...):对每个B唯一值,计算A=E2且B等于该值的C列总和SUM(...):汇总所有B组的求和结果
按你的正确结果3900来看,使用场景1的公式即可得到符合预期的结果。
内容的提问来源于stack exchange,提问作者Hytool
相关产品推荐
相关产品推荐

