Excel 自带的 SUM 只能求和整列。但实际工作中你要的是:技术部 3 月份的工资总额、华东区线上渠道的销售总量、A 供应商合格品的数量——都是带条件的求和。
SUMIFS 就是干这件事的。它是 Excel 中最实用的统计函数之一,搭配 COUNTIFS(多条件计数)和 AVERAGEIFS(多条件平均),基本能覆盖 80% 的报表统计需求。
SUMIFS 基础语法
■ 条件范围1 + 条件1 — 第一个筛选条件(比如部门=技术)
■ 条件范围2 + 条件2 — 第二个筛选条件(比如月份=3月)
条件对可以一直加,最多 127 对
场景一:单条件求和
你有一张销售表,想统计「技术部」的工资总额。
▼ 示例表格:员工工资表
| A 姓名 | B 部门 | C 月份 | D 工资 | |
|---|---|---|---|---|
| 2 | 张三 | 技术 | 3月 | 8000 |
| 3 | 李四 | 财务 | 3月 | 9500 |
| 4 | 王五 | 技术 | 3月 | 7200 |
| 5 | 赵六 | 市场 | 2月 | 8500 |
| 6 | 张三 | 技术 | 2月 | 8000 |
含义:在 B 列找「技术」的行,把对应 D 列的数字加起来 → 8000 + 7200 + 8000 = 23200。
场景二:多条件求和
统计「技术部」在「3月」的工资总额。
两个条件同时满足的行:张三3月(8000)+ 王五3月(7200)= 15200。条件对可以继续加,比如再加一个「工资>7000」。
场景三:条件引用单元格(公式可下拉)
实际做报表时,条件不会写死成「技术」「3月」,而是引用单元格。这样公式可以下拉复制、配合数据透视使用:
F2 里填部门名称,G2 里填月份,公式自动计算对应的总额。
"技术"。引用单元格时不加:F2。这是写 SUMIFS 最容易犯的错。场景四:带比较运算符的条件
条件不仅可以是等于,还可以用 >、<、>=、<=、<>:
注意最后一行的写法:运算符用引号包住,再用 & 连接单元格引用。这是 SUMIFS 独特的语法,刚开始可能不习惯。
COUNTIFS:把求和换成计数
COUNTIFS 跟 SUMIFS 几乎一样,区别是:不求和,只数有几行满足条件。而且没有「求和范围」参数,直接从条件对开始。
AVERAGEIFS:多条件平均值
语法跟 SUMIFS 完全一致,只是把求和改成求平均:
技术部 3 人的工资平均值:(8000 + 7200 + 8000) ÷ 3 ≈ 7733。
还有 MAXIFS 和 MINIFS(Office 2019+ / 365),用来找满足条件的最大值和最小值,语法一样。
常见错误排查
错误1:条件范围大小不一致
SUMIFS 要求所有范围的行数必须相同。SUMIFS(D2:D100, B2:B50, "技术") 会报错,因为 D2:D100 是 99 行,B2:B50 只有 49 行。最简单的做法:全部用整列引用(D:D、B:B)。
错误2:文本条件忘加引号
=SUMIFS(D:D, B:B, 技术) 会报错。文本条件必须用英文双引号包住:"技术"。但如果条件来自单元格引用(F2),则不加引号。
错误3:日期条件不生效
日期条件不能直接写 "2026-03-01",Excel 可能不认。推荐用 DATE 函数:
这个公式统计 E 列日期在 3 月份内的行的 D 列总和。用两个条件框定日期范围,比文本匹配更可靠。
错误4:通配符意外匹配
SUMIFS 的文本条件支持通配符:* 匹配任意字符,? 匹配单个字符。如果你的条件值里恰好包含 * 或 ?,用 ~ 转义:"~*" 表示匹配字面上的星号。
SUMIFS vs COUNTIFS vs AVERAGEIFS 对照
| 函数 | 作用 | 第一个参数 | 兼容性 |
|---|---|---|---|
| SUMIFS | 多条件求和 | 求和范围 | 2007+ |
| COUNTIFS | 多条件计数 | (无)直接写条件 | 2007+ |
| AVERAGEIFS | 多条件平均 | 平均值范围 | 2007+ |
| MAXIFS | 多条件最大值 | 最大值范围 | 2019+ |
| MINIFS | 多条件最小值 | 最小值范围 | 2019+ |
记住一个规律:除了 COUNTIFS 没有「值范围」参数外,其他四个的语法结构完全相同——第一个参数是操作范围,后面是条件对。学会一个就全会了。
实战公式速查
| 需求 | 公式 |
|---|---|
| 技术部的总工资 | =SUMIFS(C:C, B:B, "技术部") |
| 技术部且工资>8000的人数 | =COUNTIFS(B:B, "技术部", C:C, ">8000") |
| 3月的销售额合计 | =SUMIFS(D:D, A:A, ">="&DATE(2026,3,1), A:A, "<"&DATE(2026,4,1)) |
| A产品在华东区的平均单价 | =AVERAGEIFS(E:E, B:B, "A产品", C:C, "华东") |
| 本月最大单笔订单金额 | =MAXIFS(D:D, A:A, ">="&DATE(2026,3,1), A:A, "<"&DATE(2026,4,1)) |
常见问题
SUMIFS 和 SUMIF 有什么区别?
SUMIF 只能设一个条件,SUMIFS 可以设多个条件。而且两者的参数顺序不同——SUMIF 是 (条件范围, 条件, 求和范围),SUMIFS 是 (求和范围, 条件范围1, 条件1, ...)。建议统一用 SUMIFS,即使只有一个条件也用 SUMIFS,避免两套语法搞混。
条件能用单元格引用吗?
当然可以,而且推荐这样做。把条件写在单元格里(比如 E1 填"技术部"),公式写成 =SUMIFS(C:C, B:B, E1)。这样改条件时只需要改单元格的值,不用改公式。如果条件需要运算符,用拼接:=SUMIFS(C:C, D:D, ">"&F1),F1 填数字。
为什么 SUMIFS 结果是 0?
最常见的原因:条件范围里的数据格式和条件不匹配。比如条件范围是文本格式的"技术部",但你在条件里写了一个单元格引用,而那个单元格可能有前后空格或特殊字符。用 TRIM 清理一下,或者直接在公式里写死字符串确认是不是数据问题。
能跨工作表用 SUMIFS 吗?
可以。在范围前加上工作表名即可:=SUMIFS(Sheet2!C:C, Sheet2!B:B, "技术部")。注意所有范围都要指向同一个工作表——不能求和范围在 Sheet1、条件范围在 Sheet2。