SUMIF 函数:语法、示例与错误排查
更新于 2026-10-13 · 免费 · 兼容 Excel 与 Google Sheets
语法
=SUMIF(区域, 条件, [求和区域])快速答案
SUMIF 对满足一个条件的单元格求和:=SUMIF($C$2:$C$500, "New York", $D$2:$D$500) 会对 C 列等于 New York 的所有行累加 D 列的值。条件支持数字、文本、日期和通配符,且不区分大小写。结果为 0 通常是数字被存成了文本,或条件忘了加引号。
语法
=SUMIF(区域, 条件, [求和区域])| 参数 | 含义 |
|---|---|
| 区域 | 要判断的单元格:一列或一行,如 $C$2:$C$500。 |
| 条件 | 单元格要满足的条件:数字、带双引号的文本、形如 ">100" 的比较式,或 G1 这样的单元格引用。 |
| [求和区域] | 可选。满足条件时要累加的单元格。省略时 SUMIF 直接对区域本身求和。 |
视区域设置不同,参数可能用分号而非逗号分隔:=SUMIF($C$2:$C$500; "New York"; $D$2:$D$500)。在以逗号作小数点的国家/地区,这是标准写法。
基本示例
=SUMIF($C$2:$C$500, "New York", $D$2:$D$500)对 C 列城市正好是「New York」的行累加 D 列销售额。文本条件必须加双引号,且不区分大小写:「new york」求和结果相同。
=SUMIF($D$2:$D$500, ">100")省略第三个参数时,SUMIF 对区域自身求和:把所有大于 100 的值加起来。比较运算符(>、>=、<、<>)必须写在引号内,紧贴数字。
=SUMIF($B$2:$B$500, ">2026-01-01", $D$2:$D$500)对 2026 年 1 月 1 日之后的销售额求和。比较式写在引号内;单元格必须是真正的日期值,而不是「长得像日期」的文本。
=SUMIF($A$2:$A$500, "*@gmail.com", $D$2:$D$500)对以 @gmail.com 结尾的邮箱对应金额求和。* 通配任意个字符,? 只匹配一个字符,~ 用来转义文本中真实的 * 或 ?。
求和区域会从左上角单元格自动扩展到与区域同高:=SUMIF($C$2:$C$500, "New York", $D$2) 实际求和的仍是 $D$2:$D$500。虽然方便,但仍建议两个区域保持相同大小,公式才易读、可审计。
常见错误与修复方法
| 症状 | 最常见原因 | 解决办法 |
|---|---|---|
| #NAME? | SUMIF 拼写错误——或者 Excel 界面语言不是英文,函数名被本地化了(如 SUMAR.SI、SOMME.SI、SUMMEWENN、SOMA.SE)。 | 输入 =SUM( 让自动补全写出正确名称,或在与文件匹配的语言版本里打开。 |
| 结果始终为 0 | 数字被存成文本、不可见尾随空格、条件漏了引号,或求和列传错了。 | 先把文本型数字转成数字,清理空格,条件务必带双引号,再核对求和列的列标。 |
| 总和明显偏大 | 插入行后区域与求和区域错位:求和区域从左上角单元格自动扩展,悄悄把表头或汇总行也加了进去。 | 两个区域用相同高度重写并用 $ 锁定,求和区域的顶端绝不能高于第一行数据。 |
| 日期永远求和不到 | 「日期」其实是从其他系统导入的文本,所以 ">2026-01-01" 永远匹配不上。 | 先把这一列转换成真正的日期——日期条件只对真实日期值生效。 |
尾随空格在这里同样是隐形杀手:总和悄悄变少,却没有任何报错。求和前一键清理整列。
SUMIF 与 SUMIFS 对比
| SUMIF | SUMIFS | |
|---|---|---|
| 每条公式的条件数 | 一个 | 2 到 127 个 |
| 条件之间按 AND 组合 | 不支持 | 支持 |
| 求和区域的位置 | 第三个参数,可选 | 第一个参数,必填 |
| 可用版本 | 所有 Excel 版本(Google Sheets 也支持) | Excel 2007 及以上(Google Sheets 也支持) |
=SUMIFS($D$2:$D$500, $C$2:$C$500, "New York", $D$2:$D$500, ">100")一旦需要两个条件同时满足——比如「纽约且销售额大于 100」——就换 SUMIFS。注意参数顺序变了:SUMIFS 的求和区域放最前面且必填。单纯的 SUM 什么都不加地求和;带条件的求和都交给 SUMIF 和 SUMIFS。
Google Sheets 中的 SUMIF
Google Sheets 支持与 Excel 完全相同的 SUMIF 语法——上面的公式原样粘贴即可使用。
- 比较运算符、通配符和不区分大小写的匹配,在 Sheets 里的行为完全一致。
- 在以逗号作小数点的区域设置(欧洲和拉美大部分地区)里,参数间要写分号:=SUMIF($C$2:$C$500; "New York"; $D$2:$D$500)。Excel 的行为相同。
- Google Sheets 同样提供 SUMIFS,参数顺序同样倒置——多条件求和在两个应用里都通用。
- Sheets 还提供 QUERY 函数,一条公式就能筛选加汇总;Excel 里对应的做法是 SUMIFS 或数据透视表。
限制与进阶技巧
- SUMIF 无法逐行比较两个区域(比如对 D 列大于 E 列的行求和)——那需要 SUMPRODUCT:=SUMPRODUCT(($D$2:$D$500>$E$2:$E$500)*$D$2:$D$500)。
- 一次只能一个条件。要 OR 逻辑就把两个 SUMIF 相加:=SUMIF(区域, ">100")+SUMIF(区域, "<0")。
- 不能按单元格颜色求和——按颜色筛选后看状态栏,或加一列辅助标记。
- 用 $ 锁定区域($C$2:$C$500),下拉复制公式时区域才不会跑偏。
- 条件里可以用 & 拼接单元格引用:=SUMIF($C$2:$C$500, G1, $D$2:$D$500),比较式写 ">"&G1——阈值一改公式不用动。
求和之前往往要先看看符合条件的行:筛选出来、人工核对,再交给 SUMIF 算总账。下面的免费工具两头都能帮上忙。
相关工具
相关函数
常见问题
SUMIF 在 Excel 里做什么?
对满足单个条件的单元格求和——大于某阈值的销售额、某个城市的收入、某个日期之后的合计或通配符模式:=SUMIF($C$2:$C$500, "New York", $D$2:$D$500)。匹配不区分大小写,一条公式只处理一个条件。
怎么对大于某个数的单元格求和?
把运算符写进带引号的条件里,并省略第三个参数:=SUMIF($D$2:$D$500, ">100")。引号必须保留——少了引号 Excel 会把 >100 当成非法公式。大于等于用 >=;要引用单元格就用 & 拼接:">"&D1。
为什么 SUMIF 返回 0?
几乎都是数据问题而非公式问题:数字被存成文本、不可见尾随空格、条件漏了引号,或求和列传错。用 VALUE() 转换文本型数字、清理空格,并确认「New York」确实包在双引号里。
SUMIF 的条件能引用单元格吗?
能:=SUMIF($C$2:$C$500, G1, $D$2:$D$500) 直接用 G1 的值作条件。比较式则把运算符和引用拼起来:">"&G1。这样条件跟着单元格走,改阈值无需改公式。
SUMIF 区分大小写吗?
不区分——「NYC」「nyc」「Nyc」被视为同一个值。确实需要区分大小写的求和时,用 SUMPRODUCT 配合 EXACT:=SUMPRODUCT(--EXACT(区域, "NYC")*求和区域)。
什么时候该用 SUMIFS?
一旦有两个及以上必须同时成立的条件:=SUMIFS($D$2:$D$500, $C$2:$C$500, "New York", $D$2:$D$500, ">100")。SUMIF 只处理一个条件;SUMIFS 支持 2 到 127 个,Excel 2007 及以上和 Google Sheets 都能用。注意参数顺序:SUMIFS 的求和区域在最前面。
SUMIF 在 Google Sheets 里能用吗?
能——函数名、参数、通配符和不区分大小写的匹配都一样。只有在以逗号作小数点的区域设置里,参数分隔符才变成分号:=SUMIF($C$2:$C$500; "New York"; $D$2:$D$500)。
准备好处理你自己的文件了吗?
打开Excel 数据体检 — 免费