Menu

Excel SUMIF 函数:对符合条件的值求和

=SUMIF(A2:A7,"North",C2:C7) 对 A 列为 North 的各行中 C2:C7 的值求和。在可编辑的表格中练习大于某个值求和、包含某段文本求和、按日期求和以及跨工作表求和。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=SUMIF(A2:A7,"North",C2:C7) 把 A 列为 North 的每一行在 C2:C7 中的销售额加起来。SUMIF 用一个条件检查一个区域,再把另一个区域中匹配的行加起来。

某个地区的销售总额
F2
ABCDEF
1RegionProductSalesRegionTotal
2NorthApple120North230
3SouthPear45South245
4NorthPear80
5EastApple55
6SouthApple200
7NorthApple30
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

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。

按大小求和
F2
ABCDEF
1RegionProductSalesConditionTotal
2NorthApple120Over 100320
3SouthPear45100 or less210
4NorthPear80Not North300
5EastApple55Limit50
6SouthApple200Over the limit455
7NorthApple30
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

F2 把 120 和 200 加起来,F3 把其余四个加起来,两者之和始终等于总计。F4 演示“不等于”:除 North 以外的所有行。F6 从 F5 中读取界限。把运算符写在引号中,再用 & 连接单元格:写成 ">"&F5,而不是 ">F5"。

单元格包含某段文本时用 SUMIF 求和

条件中的 * 代表任意个字符,? 代表正好一个字符。"*apple*" 匹配名称中任何位置含有 apple 的产品,不区分大小写。

对包含某个词的产品求和
E2
ABCDE
1ProductSalesConditionTotal
2Apple120contains apple250
3Pineapple45exactly Apple120
4Pear80starts with P325
5Green apple55word in D680
6Plum200pear
7Apple cider30
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

E2 把 Apple、Pineapple、Green apple 和 Apple cider 加起来。E3 没有通配符,只加正好是 Apple 的单元格。E5 用 D6 中的词构建模式:把 D6 改成 cider,E5 就只显示 cider 的销售额。更多模式,以及表示星号本身的 ~,见 通配符页面。

要对任何非空单元格旁边的值求和,使用 "<>"(不为空):=SUMIF(A2:A7,"<>",B2:B7)。"" 则把单元格为空的行加起来。

按日期用 SUMIF 求和

日期就是数字,所以 ">="、"<" 等运算符都可以用在日期上。用 DATE 构建日期或把它放在单元格中,再用 & 把它和运算符连接起来。

某个日期以来的销售额
F2
ABCDEF
1RegionSalesDateConditionTotal
2North1202026-01-05From Feb 1365
3South452026-01-12Cutoff2026-03-01
4North802026-02-03Before the cutoff300
5East552026-02-18On Jan 1245
6South2002026-03-02
7North302026-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 标签,可以看到被相加的行。

实时表格
B2
AB
1RegionTotal
2North230
3South245
4East55
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

B2 向下填充到 B4:条件 A2 依次变成 A3 和 A4,而 $ 让两个区域始终停留在 Sales 工作表的同样几行上。没有 $ 的话,第三个副本会变成 Sales!A4:A9,漏掉前面几行。一列标签、每个标签旁边一个 SUMIF,这就是不用数据透视表也能按类别做汇总的方法。工作表名称中有空格时要加引号:'Sales 2026'!$A$2:$A$7。

练习:SUMIF

轮到你了:某个产品的合计
F2
ABCDEF
1RegionProductSalesProductTotal
2NorthApple120Apple
3SouthPear45
4NorthPear80
5EastApple55
6SouthApple200
7NorthPlum30
8WestApple65
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 把 Apple 各行的销售额加起来。在 F2 中写公式。

轮到你了:只算大订单
E2
ABCDE
1OrderAmountConditionTotal
2A-101120100 or more
3A-10245
4A-103310
5A-104100
6A-10585
7A-106140
8A-10799
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 把 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 来检查匹配情况。

Coddy 编程语言插图

和 Coddy 一起学编程

开始