Menu

Excel AVERAGEIF 和 AVERAGEIFS:按条件求平均值

=AVERAGEIF(A2:A7,"North",C2:C7) 对 A 列为 North 的行求 C2:C7 中数值的平均值。本文还讲解多条件的 AVERAGEIFS、忽略 0 的平均值、#DIV/0! 的解决方法,以及 MAXIFS 和 MINIFS。

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

=AVERAGEIF(A2:A7,"North",C2:C7) 对 A 列为 North 的行求 C2:C7 中销售额的平均值。它的工作方式和 SUMIF 相同,只是会把总和除以匹配的行数。

按条件求平均值
F2
ABCDEF
1RegionProductSalesConditionAverage
2NorthApple120North90
3SouthPear45North, Apple80
4NorthPear110Over 50120
5EastApple55
6SouthApple195
7NorthApple40
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

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。

不含 0 的平均值
E3
ABCDE
1StudentScoreMethodResult
2Ana80AVERAGE48
3Ben0Ignore zeros80
4Cara90Count of zeros2
5DanCount of numbers5
6Eva70
7Finn0
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

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 把它包起来,改为显示短横线、提示信息或空单元格。

没有匹配项,以及 MAXIFS 和 MINIFS
F2
ABCDEF
1RegionProductSalesFormulaResult
2NorthApple120West average#DIV/0!
3SouthPear45With IFERRORNo sales
4NorthPear110North max120
5EastApple55North min40
6SouthApple195Apple max195
7NorthApple40
#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)输入。

练习:两个条件下的平均值

轮到你了:不含缺考的班级平均分
F2
ABCDEF
1StudentClassScoreConditionAverage
2AnaA80Class A, no zeros
3BenB75
4CaraA0
5DanB60
6EvaA90
7FinnB0
8GusA70
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 求 A 班分数的平均值,排除 0 分(缺考的学生)。把公式写在 F2 中。

平均值的平均值:一个常见错误

对大小不同的各组的平均值再求平均,得到的整体平均值是错的。North 有三行,South 有两行,所以在两个平均值的平均值中,South 的每一行所占的分量比应有的更大。

平均值的平均值
E4
ABCDE
1RegionSalesFormulaResult
2North120North90
3South45South120
4North110Average of the two105
5South195All rows102
6North40
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

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。

Coddy 编程语言插图

和 Coddy 一起学编程

开始