=AVERAGEIF(A2:A7,"North",C2:C7) 对 A 列为 North 的行求 C2:C7 中销售额的平均值。它的工作方式和 SUMIF 相同,只是会把总和除以匹配的行数。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Region | Product | Sales | Condition | Average | |
| 2 | North | Apple | 120 | North | 90 | |
| 3 | South | Pear | 45 | North, Apple | 80 | |
| 4 | North | Pear | 110 | Over 50 | 120 | |
| 5 | East | Apple | 55 | |||
| 6 | South | Apple | 195 | |||
| 7 | North | Apple | 40 |
F2 对三个 North 行的 120、110 和 40 求平均值,显示 90。F3 需要两个条件,North 和 Apple,所以用 AVERAGEIFS:(120 + 40) / 2 = 80。F4 没有单独的求平均值区域,所以直接对符合条件的销售额本身求平均值。
AVERAGEIF 和 AVERAGEIFS 语法
=AVERAGEIF(range, criteria, [average_range])
=AVERAGEIFS(average_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)
参数顺序和 SUMIF、SUMIFS 是同一个陷阱:AVERAGEIF 把求平均值的区域放在最后(并且可以省略),AVERAGEIFS 把它放在最前。两者的条件写法相同:"North"、">50"、"<>0"、"*apple*",或者用运算符连接单元格,">"&F5。求平均值区域中的空单元格和文本会被跳过。
求平均值并忽略 0
AVERAGE 会把 0 算作一个值,所以两个缺考学生的 0 分会拉低班级平均分。空单元格则不同:AVERAGE 会跳过它们。=AVERAGEIF(B2:B7,"<>0") 也会跳过 0。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Student | Score | Method | Result | |
| 2 | Ana | 80 | AVERAGE | 48 | |
| 3 | Ben | 0 | Ignore zeros | 80 | |
| 4 | Cara | 90 | Count of zeros | 2 | |
| 5 | Dan | Count of numbers | 5 | ||
| 6 | Eva | 70 | |||
| 7 | Finn | 0 |
AVERAGE 用 240 除以 5,因为 Dan 的空单元格被排除了,但两个 0 被计入了,所以显示 48。带 "<>0" 的 AVERAGEIF 用 240 除以 3,显示 80。在 B5 中输入 60,两个结果都会变;在 B5 中输入 0,只有 AVERAGE 会变。如果要同时忽略 0 和负数,用 ">0"。
AVERAGEIF 为什么返回 #DIV/0!
没有任何匹配时,AVERAGEIF 没有可以除的数,就会返回 #DIV/0!。用 IFERROR 把它包起来,改为显示短横线、提示信息或空单元格。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Region | Product | Sales | Formula | Result | |
| 2 | North | Apple | 120 | West average | #DIV/0! | |
| 3 | South | Pear | 45 | With IFERROR | No sales | |
| 4 | North | Pear | 110 | North max | 120 | |
| 5 | East | Apple | 55 | North min | 40 | |
| 6 | South | Apple | 195 | Apple max | 195 | |
| 7 | North | Apple | 40 |
#DIV/0! 公式除以了零或空单元格。没有 West 行,所以 F2 显示 #DIV/0!,F3 显示提示信息。把 A3 改成 West,两个单元格都会显示 45。
MAXIFS 和 MINIFS
上面表格中的 F4 到 F6 按条件查找最大值和最小值。它们使用 AVERAGEIFS 的顺序,要查找的区域放在最前:=MAXIFS(C2:C7,A2:A7,"North") 返回 120,=MINIFS(C2:C7,A2:A7,"North") 返回 40。和 AVERAGEIF 不同,没有匹配时它们返回 0,而不是错误。
MAXIFS 和 MINIFS 需要 Excel 2019 或更高版本,或者 Microsoft 365。在 Excel 2016 及更早的版本中,=MAX(IF(A2:A7="North",C2:C7)) 能做到同样的事;在这些版本中要按 Ctrl+Shift+Enter(Mac 上按 Cmd+Shift+Enter)输入。
练习:两个条件下的平均值
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Student | Class | Score | Condition | Average | |
| 2 | Ana | A | 80 | Class A, no zeros | ||
| 3 | Ben | B | 75 | |||
| 4 | Cara | A | 0 | |||
| 5 | Dan | B | 60 | |||
| 6 | Eva | A | 90 | |||
| 7 | Finn | B | 0 | |||
| 8 | Gus | A | 70 |
轮到你了: 求 A 班分数的平均值,排除 0 分(缺考的学生)。把公式写在 F2 中。
平均值的平均值:一个常见错误
对大小不同的各组的平均值再求平均,得到的整体平均值是错的。North 有三行,South 有两行,所以在两个平均值的平均值中,South 的每一行所占的分量比应有的更大。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Region | Sales | Formula | Result | |
| 2 | North | 120 | North | 90 | |
| 3 | South | 45 | South | 120 | |
| 4 | North | 110 | Average of the two | 105 | |
| 5 | South | 195 | All rows | 102 | |
| 6 | North | 40 |
E4 显示 105,E5 显示五行的真实平均值 102。当各组大小不同时,要么用一个 AVERAGEIFS 直接对行本身求平均值,要么用 SUMIFS 除以相同条件下的 COUNTIFS:
=SUMIFS(B2:B6,A2:A6,"North")/COUNTIFS(A2:A6,"North")
按学分或数量加权的分数又是另一种计算:那是加权平均值。
常见问题
AVERAGEIF 和 AVERAGEIFS 有什么区别?
AVERAGEIF 只接受一个条件,求平均值的区域放在最后:=AVERAGEIF(A2:A7,"North",C2:C7)。AVERAGEIFS 接受多个条件,求平均值的区域放在最前:=AVERAGEIFS(C2:C7,A2:A7,"North",B2:B7,"Apple")。
如何在 Excel 中求平均值并忽略 0?
使用 =AVERAGEIF(B2:B7,"<>0")。它只对不为 0 的单元格求平均值。AVERAGE 和 AVERAGEIF 本来就会排除空单元格,所以只有真正的 0 才需要这个条件。
为什么 AVERAGEIF 返回 #DIV/0!?
没有单元格符合条件,所以 Excel 用为 0 的总和除以为 0 的个数。把它包起来,改为显示别的内容:=IFERROR(AVERAGEIF(A2:A7,"West",C2:C7),"No data")。
如何按条件求最大值?
使用 MAXIFS,要查找的区域放在最前:=MAXIFS(C2:C7,A2:A7,"North") 返回 North 中最大的值。MINIFS 用法相同,求的是最小值。两者都需要 Excel 2019 或更高版本,或者 Microsoft 365。