只算期末考的加权平均(SUMPRODUCT)
题目
题目说明
成绩表 A2:C5 把平时考与期末考混在一起,各自有权重。董事会只要一个数字:**只看 Final 那几行**的加权平均。请填在 Final grade 单元格 E2——平时考的权重不能把它拉下来。
分母要用「筛选后的权重和」,不是全部权重的总和——用全部权重的话,用例 1 会算出 52 而不是 86。
题目数据
用表格查看整份数据(可选中、可复制)
| A | B | C | E | |
|---|---|---|---|---|
| 1 | Type | Score | Weight | Final grade |
| 2 | Final | 90 | 0.3 | |
| 3 | Quiz | 70 | 0.3 | |
| 4 | Final | 80 | 0.2 | |
| 5 | Quiz | 88 | 0.2 |
知识点
像 (A2:A5="Final") 这种比较会返回 TRUE/FALSE,放进 SUMPRODUCT 会被当成 1/0,所以乘上条件就等于只留下要的行。分母也必须用同一个条件:只平均一部分数据时,权重要重新归一化。AVERAGEIF 做不到——它只平均数值,不吃第二列的权重。
解题思路
答案写在 E2。提交时我们会换 3 组输入重跑你的公式,写死数字一定过不了 —— 公式必须跟着单元格走。
- 目标单元格是 E2
- 只有 A2:A5 为
Final的行要算 - SUMPRODUCT 里的比较会变成 1/0,直接乘进乘积即可
- 公式形状:SUMPRODUCT((条件)*分数*权重) / SUMPRODUCT((同一个条件)*权重)
官方解法
展开 2 种解法(建议先自己试一次)
解法 1:把条件乘进去
=SUMPRODUCT(($A$2:$A$5="Final")*$B$2:$B$5*$C$2:$C$5)/SUMPRODUCT(($A$2:$A$5="Final")*$C$2:$C$5)
条件把平时考的行在分子与分母都归零,计算只看得到期末考:(90×0.3 + 80×0.2) ÷ (0.3 + 0.2) = 86。
解法 2:逗号语法搭配 -- 转换
=SUMPRODUCT(($A$2:$A$5="Final")*$B$2:$B$5,$C$2:$C$5)/SUMPRODUCT(--($A$2:$A$5="Final"),$C$2:$C$5)
SUMPRODUCT 可以用逗号接多个数组;两个减号先把 TRUE/FALSE 转成 1/0,再乘上权重。答案相同,而且条件变多时更好读。
常见问题
SUMPRODUCT 遇到 A2:A5="Final" 这种比较会怎么处理?
会把比较结果变成 1 和 0。乘上它就能保留匹配的行、其余归零,所以一条公式同时完成筛选与计算。
为什么分母只能用期末考的权重?
因为你只平均了其中一部分。期末考只占权重的 0.5,若除以 1.0,答案会被缩小;除以同条件的权重和才是重新归一化——这就是 86 与 43 的差别。
为什么不用 AVERAGEIF?
AVERAGEIF 只会平均数值,无法套用第二列的权重。加权平均需要「分数 × 权重」的乘积,而这正是 SUMPRODUCT 帮你做的。