Excel中用Sumif按Level1分组取首值按Department求和的实现方法
Excel 实现按部门统计唯一Level 1首次Size总和方案
适用场景说明
数据结构:列顺序为Row/Levels/Level 1/Size/Department,统计规则为同一部门下,每个Level 1分组仅累加首次出现的Size值。以下方案分不同Excel版本提供,海量数据优先选第二种方法。
方法1:Excel 365 / 2021 及以上版本(单公式完成)
假设你的数据存放在A1:E10000区域(A列=Row、B列=Levels、C列=Level 1、D列=Size、E列=Department),G列存储待统计的部门名称,H2单元格输入以下公式下拉即可:
=SUM(UNIQUE(FILTER($D$2:$D$10000,($E$2:$E$10000=G2)*(MATCH($C$2:$C$10000&$E$2:$E$10000,$C$2:$C$10000&$E$2:$E$10000,0)=ROW($C$2:$C$10000)-ROW($C$2)+1)),FALSE,TRUE))
公式逻辑:
- MATCH部分判断当前行是否为「部门+Level 1」组合的首次出现行,返回TRUE/FALSE
- FILTER筛选出目标部门下所有首次出现行的Size值
- UNIQUE做二次去重避免误判,SUM直接求和得到结果
方法2:Excel 2019及更早版本(辅助列+透视表,适合海量数据)
该方法运算效率远高于数组公式,十万行以上数据优先使用:
- 第一步:新增辅助列,F2单元格输入以下公式,按
Ctrl+Shift+Enter触发数组运算后,下拉填充所有数据行
逻辑:当前行是该部门下该Level 1的首次出现行时返回Size值,否则返回0=IF(MATCH(C2&E2,$C$2:$C$10000&$E$2:$E$10000,0)=ROW(A1),D2,0) - 第二步:插入数据透视表:
- 行字段拖入「Department」
- 值字段拖入新增的辅助列,汇总方式选择「求和」
生成的透视表结果即为各部门符合规则的Size总和,和你给出的示例计算结果完全匹配:Department 1总和为5.0,Department 2总和为12.0。
内容的提问来源于stack exchange,提问作者Guilherme Corazza
相关产品推荐
相关产品推荐

