Excel技术问询:筛选条件下基于C列唯一值的G列求和
解决方案
核心问题分析
你之前的公式存在逻辑偏差:
SUM(UNIQUE(FILTER(G:G, (C:C)*(B:B=I2))))是对G列去重后求和,而非基于C列唯一值筛选对应G列,完全偏离需求SUM(IF(Frequency))未正确关联「B列等于I2」的筛选条件与C列唯一值的匹配关系
针对不同Excel版本的正确公式
1. Excel 365/2021(支持动态数组)
用XLOOKUP+UNIQUE+FILTER组合,逻辑清晰易维护:
=SUM(XLOOKUP(UNIQUE(FILTER(C:C, B:B=I2)), C:C, G:C, "", 0, 1))
公式拆解:
FILTER(C:C, B:B=I2):筛选出所有B列等于I2的C列值UNIQUE(...):对筛选后的C列值去重,得到唯一值列表XLOOKUP(...):为每个唯一C值匹配对应的G列值(第6参数1表示取第一个匹配的G值)SUM(...):对匹配到的G列值求和
2. 旧版Excel(不支持动态数组)
使用数组公式(需按Ctrl+Shift+Enter确认输入):
=SUM(IF(FREQUENCY(IF(B:B=I2, MATCH(C:C, C:C, 0)), ROW(C:C)-ROW(C1)+1), G:C))
公式拆解:
IF(B:B=I2, MATCH(C:C, C:C, 0)):仅保留B列等于I2的行,返回对应C列值在整列中的首次出现位置FREQUENCY(...):标记首次出现的C值(返回1),重复出现的返回0IF(..., G:C):仅提取首次出现的C值对应的G列值SUM(...):对提取出的G列值求和
3. 若需求为「每个唯一C值对应的G列总和」
如果你的真实需求是:对B列等于I2的行,按C列分组求和后再汇总(注:此结果等价于直接SUM(FILTER(G:G,B:B=I2)),仅当需要单独查看分组结果时有用),可使用:
=SUM(SUMIFS(G:C, B:C, I2, C:C, UNIQUE(FILTER(C:C,B:B=I2))))
内容的提问来源于stack exchange,提问作者Hytool
相关产品推荐
相关产品推荐

