=SUMIF(A2:A7,"North",C2:C7) 把 A 列为 North 的每一行在 C2:C7 中的销售额加起来。SUMIF 用一个条件检查一个区域,再把另一个区域中匹配的行加起来。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Region | Product | Sales | Region | Total | |
| 2 | North | Apple | 120 | North | 230 | |
| 3 | South | Pear | 45 | South | 245 | |
| 4 | North | Pear | 80 | |||
| 5 | East | Apple | 55 | |||
| 6 | South | Apple | 200 | |||
| 7 | North | Apple | 30 |
F2 把 North 的三行 120、80 和 30 加起来,显示 230。F3 从 E3 中读取地区:把 E3 改成 East,它就显示 55。修改 C 列中的任何数字,两个合计都会更新。
SUMIF 的语法
=SUMIF(range, criteria, [sum_range])
range是用条件检查的单元格。criteria是条件:引号中的文本("North")、比较(">100")、通配符模式("*apple*"),或者一个单元格(E3,带运算符时写成">"&F2)。sum_range是要相加的单元格。它是可选的:省略时,SUMIF 把range本身中匹配的单元格加起来。
range 和 sum_range 按行一一对应,所以它们应该从同一行开始,大小也相同。如果你的区域设置使用小数逗号,Excel 会用分号分隔参数:=SUMIF(A2:A7;"North";C2:C7)。
SUMIF 大于或小于某个值
要把大于或小于某个值的数字加起来,条件和求和都在同一列上,所以可以省略 sum_range。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Region | Product | Sales | Condition | Total | |
| 2 | North | Apple | 120 | Over 100 | 320 | |
| 3 | South | Pear | 45 | 100 or less | 210 | |
| 4 | North | Pear | 80 | Not North | 300 | |
| 5 | East | Apple | 55 | Limit | 50 | |
| 6 | South | Apple | 200 | Over the limit | 455 | |
| 7 | North | Apple | 30 |
F2 把 120 和 200 加起来,F3 把其余四个加起来,两者之和始终等于总计。F4 演示“不等于”:除 North 以外的所有行。F6 从 F5 中读取界限。把运算符写在引号中,再用 & 连接单元格:写成 ">"&F5,而不是 ">F5"。
单元格包含某段文本时用 SUMIF 求和
条件中的 * 代表任意个字符,? 代表正好一个字符。"*apple*" 匹配名称中任何位置含有 apple 的产品,不区分大小写。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Product | Sales | Condition | Total | |
| 2 | Apple | 120 | contains apple | 250 | |
| 3 | Pineapple | 45 | exactly Apple | 120 | |
| 4 | Pear | 80 | starts with P | 325 | |
| 5 | Green apple | 55 | word in D6 | 80 | |
| 6 | Plum | 200 | pear | ||
| 7 | Apple cider | 30 |
E2 把 Apple、Pineapple、Green apple 和 Apple cider 加起来。E3 没有通配符,只加正好是 Apple 的单元格。E5 用 D6 中的词构建模式:把 D6 改成 cider,E5 就只显示 cider 的销售额。更多模式,以及表示星号本身的 ~,见 通配符页面。
要对任何非空单元格旁边的值求和,使用 "<>"(不为空):=SUMIF(A2:A7,"<>",B2:B7)。"" 则把单元格为空的行加起来。
按日期用 SUMIF 求和
日期就是数字,所以 ">="、"<" 等运算符都可以用在日期上。用 DATE 构建日期或把它放在单元格中,再用 & 把它和运算符连接起来。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Region | Sales | Date | Condition | Total | |
| 2 | North | 120 | 2026-01-05 | From Feb 1 | 365 | |
| 3 | South | 45 | 2026-01-12 | Cutoff | 2026-03-01 | |
| 4 | North | 80 | 2026-02-03 | Before the cutoff | 300 | |
| 5 | East | 55 | 2026-02-18 | On Jan 12 | 45 | |
| 6 | South | 200 | 2026-03-02 | |||
| 7 | North | 30 | 2026-03-20 |
F2 把 2 月 1 日起的四笔订单 80、55、200 和 30 加起来,得到 365。F4 把 F3 中日期之前的订单加起来。按月合计需要开始日期和结束日期,也就是同一列上的两个条件,这要交给 SUMIFS:=SUMIFS(B2:B7,C2:C7,">="&DATE(2026,2,1),C2:C7,"<"&DATE(2026,3,1))。
用 SUMIF 跨工作表求和
区域可以位于另一个工作表中:在区域前面加上工作表名称和 !。下面的数据在 Sales 标签中,汇总在单独的标签中。点击 Sales 标签,可以看到被相加的行。
| A | B | |
|---|---|---|
| 1 | Region | Total |
| 2 | North | 230 |
| 3 | South | 245 |
| 4 | East | 55 |
B2 向下填充到 B4:条件 A2 依次变成 A3 和 A4,而 $ 让两个区域始终停留在 Sales 工作表的同样几行上。没有 $ 的话,第三个副本会变成 Sales!A4:A9,漏掉前面几行。一列标签、每个标签旁边一个 SUMIF,这就是不用数据透视表也能按类别做汇总的方法。工作表名称中有空格时要加引号:'Sales 2026'!$A$2:$A$7。
练习:SUMIF
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Region | Product | Sales | Product | Total | |
| 2 | North | Apple | 120 | Apple | ||
| 3 | South | Pear | 45 | |||
| 4 | North | Pear | 80 | |||
| 5 | East | Apple | 55 | |||
| 6 | South | Apple | 200 | |||
| 7 | North | Plum | 30 | |||
| 8 | West | Apple | 65 |
轮到你了: 把 Apple 各行的销售额加起来。在 F2 中写公式。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Order | Amount | Condition | Total | |
| 2 | A-101 | 120 | 100 or more | ||
| 3 | A-102 | 45 | |||
| 4 | A-103 | 310 | |||
| 5 | A-104 | 100 | |||
| 6 | A-105 | 85 | |||
| 7 | A-106 | 140 | |||
| 8 | A-107 | 99 |
轮到你了: 把 B2:B8 中 100 及以上的订单加起来。在 E2 中写公式。
SUMIF 多条件求和
SUMIF 只接受一个条件。下面两种情况很常见。
两个条件必须同时成立(North 且 Apple):使用 SUMIFS。它的求和区域写在最前面,然后是成对的条件。
=SUMIFS(C2:C7,A2:A7,"North",B2:B7,"Apple")
同一列中满足任一值(North 或 South):给 SUMIF 一个用大括号括起来的列表,再用 SUM 把两个结果加起来,或者把两个 SUMIF 相加。
=SUM(SUMIF(A2:A7,{"North","South"},C2:C7))
=SUMIF(A2:A7,"North",C2:C7)+SUMIF(A2:A7,"South",C2:C7)
条件需要基于计算(日期的月份、销量乘以单价)时,SUMIF 无能为力;SUMPRODUCT 可以做到。
为什么 SUMIF 返回 0 或错误的合计
- 条件从来没有匹配上。 末尾带空格的“North ”不等于“North”。用
=COUNTIF(A2:A7,"North")测试条件:如果结果是 0,问题出在匹配上,而不是求和上。 - 求和区域中的数字以文本形式存储。 SUMIF 会悄悄跳过它们。这些数字通常靠单元格左侧显示,并带有一个绿色三角;先把它们转换成数字。
- 单元格写在了引号里。
">F5"比较的是文本 F5。请写成">"&F5。 - 区域大小不同。
=SUMIF(A2:A7,"North",C2)不会返回错误:Excel 会从sum_range的第一个单元格开始,把它调整成和range一样的大小。这样也能算,但如果求和区域从错误的行开始,就会悄悄加错单元格,所以两个区域一定要对应相同的行。 - 区域位于另一个已关闭的工作簿中。 在打开那个文件之前,SUMIF 会显示
#VALUE!。
常见问题
Excel 中的 SUMIF 是怎样工作的?
=SUMIF(range, criteria, sum_range) 用条件逐个检查 range 中的单元格,匹配时就把 sum_range 中同一行的单元格加进来。=SUMIF(A2:A7,"North",C2:C7) 对 North 各行的 C 列求和。
怎样对大于某个数的值求和?
省略求和区域,把比较条件放在引号中:=SUMIF(C2:C7,">100") 把 C2:C7 中所有大于 100 的值加起来。界限在单元格中时,写成 =SUMIF(C2:C7,">"&F2)。
单元格包含某段文本时怎样求和?
在文本两边加上星号:=SUMIF(B2:B7,"*apple*",C2:C7) 对 B 列包含 apple 的所有行(如 Apple、Pineapple 或 Green apple)的 C 列求和。匹配时不区分大小写。
SUMIF 怎样使用多个条件?
条件必须同时成立时,用 SUMIFS:=SUMIFS(C2:C7,A2:A7,"North",B2:B7,"Apple")。同一列中满足两个值之一时,把列表的结果加起来:=SUM(SUMIF(A2:A7,{"North","South"},C2:C7))。
为什么 SUMIF 返回 0?
通常是条件从来没有匹配上(数据末尾多了一个空格,或者把 ">"&F2 写成了 ">F2"),或者求和区域中的数字以文本形式存储,SUMIF 会跳过它们。用相同的区域和条件写一个 COUNTIF 来检查匹配情况。