Menu

Excel 加权平均:SUMPRODUCT 公式

=SUMPRODUCT(B2:B5,C2:C5)/SUM(C2:C5) 就是加权平均:每个值乘以它的权重,乘积相加,再用总和除以权重之和。适用于成绩、按学分计算的 GPA 和按数量计算的价格。

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

=SUMPRODUCT(B2:B5,C2:C5)/SUM(C2:C5) 计算加权平均:B 列的每个分数乘以 C 列中对应的权重,把乘积相加,再用总和除以权重之和。

课程加权总评
F2
ABCDEF
1PartScoreWeightAverageResult
2Homework8520%Weighted81.2
3Quizzes7830%Plain AVERAGE80.75
4Midterm7220%
5Final8830%
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

加权总评是 81.2,而普通的 AVERAGE 得到 80.75,因为它把只占 20% 的作业当成了和占 30% 的期末考试一样重要。修改期末考试的分数,加权总评的变化会比作业分数同样变化时更大。

Excel 没有 WEIGHTED.AVERAGE 函数,所以用 SUMPRODUCT 除以 SUM 就是标准公式。Google Sheets 有 AVERAGE.WEIGHTED(B2:B5,C2:C5)。

加权平均公式的原理

SUMPRODUCT 把两个区域逐行相乘,再把结果相加。用一个辅助列展开来写,就是一列乘积再加上它们的 SUM:

逐步拆解公式
D6
ABCD
1PartScoreWeightScore x weight
2Homework8520%17.0
3Quizzes7830%23.4
4Midterm7220%14.4
5Final8830%26.4
6Total100%81.2
7Weighted average81.2
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

每一部分贡献的是分数乘以权重:85 × 20% 是 17.0,78 × 30% 是 23.4,依此类推。它们加起来是 81.2。权重之和是 100%,所以这里除以 C6 不会改变结果,但当权重之和不是 100% 时,正是这一步保证了公式的正确性。

权重之和不是 100% 的情况

权重不一定是百分比。GPA 按学分加权,平均价格按数量加权。除以权重的 SUM,任何总和都能处理。

按学分加权的 GPA
F2
ABCDEF
1CourseGrade pointsCreditsAverageResult
2Math44Weighted GPA3.51
3History33Plain average3.48
4Biology3.74Total credits14
5Art2.72
6Lab41
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

如果不做除法,公式返回的是绩点乘以学分的总和,这里是 49.2,而不是 GPA。做了除法后,F2 显示的是按 14 个学分加权的 GPA。4 学分的课程会把平均值拉向它们的成绩,而 1 学分的实验课几乎没有影响:把 B6 改成 2,对比一下 F2 和 F3 的变化幅度。

如果你的权重是百分比,而且加起来恰好是 100%,那么单用 =SUMPRODUCT(B2:B5,C2:C5) 也能得到相同的结果。但还是要保留 /SUM(...):哪天某个权重被修改、总和变成了 105%,不带除法的公式就会出错,而表格上不会有任何提示。

按条件计算加权平均

如果只对部分行加权,就在 SUMPRODUCT 中乘以一个条件,再用 SUMIF 把符合条件的权重相加。下面按销售数量对每个地区的平均价格加权。

各地区的平均价格
G2
ABCDEFG
1RegionProductPriceQtyRegionAverage price
2NorthApple$1.20100North$1.45
3SouthPear$1.5040South$1.36
4NorthPear$1.5060
5SouthApple$1.20120
6NorthPlum$2.0040
7SouthPlum$2.0020
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

North 卖出了 100 个苹果、60 个梨和 40 个李子,所以它的平均价格是 $1.45,比三个价格的简单平均值更接近苹果的价格。条件 (A2:A7=F2) 在 North 的行上为 1,在其他行上为 0,所以其他行不会给分子增加任何值,而分母中的 SUMIF 只把 North 的数量相加。

练习:加权平均价格

轮到你了:平均进货价
F2
ABCDEF
1BatchPriceQtyAverageResult
2Jan$4.20100Weighted price
3Feb$4.5040
4Mar$3.90250
5Apr$4.8010
6May$4.10120
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 你分五批以不同的价格买入了同一种商品。按每批的数量加权,计算每件商品的平均价格。把公式写在 F2 中。

导致加权平均出错的常见错误

  • 对乘积求 AVERAGE。 对一列“分数 × 权重”使用 =AVERAGE(D2:D5),除的是行数而不是权重,会得到一个很小且毫无意义的数字。应该用乘积的 SUM 除以权重的 SUM。
  • 除以个数而不是权重。 =SUMPRODUCT(B2:B6,C2:C6)/COUNT(B2:B6) 只有在每个权重都是 1 时才正确。
  • 区域没有对齐。 =SUMPRODUCT(B2:B6,C3:C7) 会把每个值和下一行的权重配对。两个区域必须在同样的行开始和结束;大小不同时会返回 #VALUE!。
  • 权重为空。 空权重算作 0,所以那一行会被悄悄排除在外。如果缺少权重时应该停止计算,先用 =COUNTBLANK(C2:C6) 检查一下。
  • 对平均值求平均。 两个班的平均分分别是 70(10 名学生)和 90(30 名学生),它们的平均并不是 80。按班级人数加权,结果是 85;AVERAGEIF 一文中带条件的计算也有同样的陷阱。

常见问题

Excel 中怎么计算加权平均?

用 =SUMPRODUCT(B2:B5,C2:C5)/SUM(C2:C5),其中值在 B 列,权重在 C 列。SUMPRODUCT 把每个值乘以它的权重并把结果相加,再除以权重之和就得到平均值。

权重之和必须是 100% 吗?

不必,只要你除以权重的 SUM 就行。学分为 3、4、2、1,或者权重为 2、1、1,计算方法都一样。只有不做除法、直接用 =SUMPRODUCT(B2:B5,C2:C5) 的简便写法,才要求权重之和恰好是 100%。

Excel 中有 WEIGHTED.AVERAGE 函数吗?

没有。Excel 没有内置的加权平均函数,所以 SUMPRODUCT 和 SUM 的组合就是标准公式。在 Google Sheets 中,AVERAGE.WEIGHTED(B2:B5,C2:C5) 能完成同样的计算。

怎么按条件计算加权平均?

在 SUMPRODUCT 中加上条件,权重部分用 SUMIF:=SUMPRODUCT((A2:A7="North")*B2:B7*C2:C7)/SUMIF(A2:A7,"North",C2:C7)。

Coddy 编程语言插图

和 Coddy 一起学编程

开始