Excel SUMIFS 函数 | 保姆级完全教程
一、SUMIFS 是什么?一句大白话
SUMIFS 就是"多条件求和"——在指定区域中,把同时满足多个条件的所有单元格数值加起来。
和它的兄弟 SUMIF(单条件)相比:
记住:只要涉及"在什么情况下,把哪些数加起来",而且情况有2个以上 → 用 SUMIFS。
二、语法参数拆解
=SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)
逐个拆开来看:
三、从零开始的基础入门案例
假设你有一张销售表:
案例1:求 北京 的 苹果 总销售额?
=SUMIFS(D2:D7, B2:B7, "北京", C2:C7, "苹果")
结果:500 + 450 = 950
拆解:
- `B2:B7, "北京"` → 条件1:城市必须是北京
- `C2:C7, "苹果"` → 条件2:产品必须是苹果
案例2:求 销售额大于400 的 苹果 总和?
=SUMIFS(D2:D7, C2:C7, "苹果", D2:D7, ">400")
结果:500 + 600 + 800 + 450 = 2350(跳过了300和350,因为它们对应的是苹果但 ≤400,或不是苹果)
四、常见用法大全
4.1 按日期区间汇总
求 5月1日到5月2日 的销售额:
=SUMIFS(D2:D7, A2:A7, ">=2026/5/1", A2:A7, "<=2026/5/2")
或者引用单元格:
=SUMIFS(D2:D7, A2:A7, ">="&E2, A2:A7, "<="&F2)
关键技巧:**比较运算符必须用引号包起来,单元格引用用 & 拼接**。写成 `>=E2` 是错的,Excel会把它当成文字。
4.2 通配符模糊匹配
=SUMIFS(D2:D7, C2:C7, "苹*") → 匹配"苹果"、"苹果汁"等 =SUMIFS(D2:D7, B2:B7, "*海") → 匹配"上海"、"威海"等 =SUMIFS(D2:D7, C2:C7, "苹?") → 匹配"苹果"、"苹苹"(2字×苹开头)
4.3 引用单元格作为条件
条件直接写在单元格里,公式引用即可:
=SUMIFS(D2:D7, B2:B7, H2, C2:C7, I2)
H2 放 "北京",I2 放 "苹果",改了单元格值,结果自动更新。
4.4 不等于某值
=SUMIFS(D2:D7, B2:B7, "<>北京") → 北京以外的城市 =SUMIFS(D2:D7, D2:D7, "<>300") → 销售额不等于300的
五、高频坑 & 解决办法
坑1:SUMIFS 和 SUMIF 参数顺序不同
这是最常见的坑!
=SUMIF(条件区域, 条件, 求和区域) ← SUMIF =SUMIFS(求和区域, 条件区域1, 条件1, ...) ← SUMIFS 求和区域在第一位!
解决办法:每次写 SUMIFS 脑子里先过一遍"三个字——求和区"。把要求和的那一列放到第一个参数。
坑2:比较运算符写错了
错误写法:
=SUMIFS(D2:D7, D2:D7, >=100) ← 缺少引号 =SUMIFS(D2:D7, D2:D7, ">=E2") ← E2 被当成文字了
正确写法:
=SUMIFS(D2:D7, D2:D7, ">=100") =SUMIFS(D2:D7, D2:D7, ">="&E2) ← 单元格引用要用 & 拼
坑3:条件区域长度不一致
SUMIFS 要求所有条件区域与求和区域大小完全相同。
=SUMIFS(D2:D7, B2:B10, "北京", C2:C7, "苹果") ← B2:B10 ≠ D2:D7,报错!
解决办法:按 Ctrl+Shift+↓ 选中整列,确认范围。
坑4:找不到匹配结果,返回0
当没有任何行同时满足全部条件时,SUMIFS 返回 0(不是报错)。
这个 0 有时候会让人误以为数据是对的,实际上可能是条件写错了。
排查方法:先去掉一个条件测试,逐一加回去,看哪个条件把结果砍成了0。
坑5:空单元格被当成0
SUMIFS 不会跳过空格,空格在比较时相当于空字符串 ""。如果你写 ">100",空格不算 >100,所以不影响。但如果你要对空格求和,要用 ="" 作为条件。
六、进阶实用小技巧
6.1 多个"或"条件怎么算?
SUMIFS 只能处理 "且" 的关系。如果需要 "或":
北京 OR 上海 的苹果总销售额: =SUMIFS(D2:D7, B2:B7, "北京", C2:C7, "苹果") + SUMIFS(D2:D7, B2:B7, "上海", C2:C7, "苹果")
或者用 SUMPRODUCT 实现(更高级)。
6.2 用日期函数动态算
本月销售额: =SUMIFS(D2:D7, A2:A7, ">="&EOMONTH(TODAY(),-1)+1, A2:A7, "<="&EOMONTH(TODAY(),0)) 上月销售额: =SUMIFS(D2:D7, A2:A7, ">="&EOMONTH(TODAY(),-2)+1, A2:A7, "<="&EOMONTH(TODAY(),-1))
6.3 条件区域和求和区域是同一列
这完全合法:
大于 400 的销售额求和: =SUMIFS(D2:D7, D2:D7, ">400")
条件区域和求和区域都用 D2:D7。
6.4 整列引用(适合动态新增数据)
=SUMIFS(D:D, B:B, "北京", C:C, "苹果")
好处:加了新数据不用改公式。坏处:计算量大,大表可能慢。
6.5 结合 IFERROR 美化
条件写错或者数据缺失时,显示 0 而不是报错:
=IFERROR(SUMIFS(D:D, B:B, E2, C:C, F2), 0)
七、SUMIFS vs 数据透视表 怎么选?
建议:日常汇报用 SUMIFS,数据分析探索用透视表。两者不是互斥,而是互补。
总结一句话:**求和区放第一,条件成对写,运算符加引号,单元格用 & 拼**——这四条记住,SUMIFS 就不会再出错了。