在Excel / Google表格中查找加权平均值

时间:2016-04-11 16:41:08

标签: excel google-sheets

我正在尝试使用加权平均值计算学生分数,如下表所示:

https://docs.google.com/spreadsheets/d/1E35005CEgqYlkRYE3IIqVnWTaOROD54L3eEt4nIo-8Y/edit#gid=0

B4:B13有这样的等式但是我将有大约40个任务,这将使这个很长时间输出。

我尝试使用SUMPRODUCT,但有两个问题:  1.权重在每隔一列  2.如果标记是空白单元格,则该分配的权重应为零。 (例如,见学生10,作业1的权重应为零,总成绩应为100%。

我如何使用公式来实现这一目标?

1 个答案:

答案 0 :(得分:0)

试试这个:

=ArrayFormula(SUM(IF((MOD(COLUMN($D4:$Z4),2)=0)*(N(+D$1:$Z$1)<>0)*($D4:$Z4<>""),$D4:$Z4*$D$2:$Z$2/$D$1:$Z$1)*100/SUM(IF((MOD(COLUMN($D4:$Z4),2)=0)*(N(+D$1:$Z$1)<>0)*($D4:$Z4<>""),$D$2:$Z$2))))

enter image description here

如果你想要一个随着额外的列增加而增长的公式,那就使用这个怪物:

=ArrayFormula(SUM(IF((MOD(COLUMN($D4:INDEX(4:4,MATCH(1E+99,$2:$2))),2)=0)*(N(+D$1:INDEX($1:$1,MATCH(1E+99,$2:$2)))<>0)*($D4:INDEX(4:4,MATCH(1E+99,$2:$2))<>""),$D4:INDEX(4:4,MATCH(1E+99,$2:$2))*$D$2:INDEX($2:$2,MATCH(1E+99,$2:$2))/$D$1:INDEX($1:$1,MATCH(1E+99,$2:$2)))*100/SUM(IF((MOD(COLUMN($D4:INDEX(4:4,MATCH(1E+99,$2:$2))),2)=0)*(N(+D$1:INDEX($1:$1,MATCH(1E+99,$2:$2)))<>0)*($D4:INDEX(4:4,MATCH(1E+99,$2:$2))<>""),$D$2:INDEX($2:$2,MATCH(1E+99,$2:$2))))))

它会找到第2行中有一个数字的最后一列,并将其用作结束列。