我正在尝试使用加权平均值计算学生分数,如下表所示:
https://docs.google.com/spreadsheets/d/1E35005CEgqYlkRYE3IIqVnWTaOROD54L3eEt4nIo-8Y/edit#gid=0
B4:B13有这样的等式但是我将有大约40个任务,这将使这个很长时间输出。
我尝试使用SUMPRODUCT,但有两个问题: 1.权重在每隔一列 2.如果标记是空白单元格,则该分配的权重应为零。 (例如,见学生10,作业1的权重应为零,总成绩应为100%。
我如何使用公式来实现这一目标?
答案 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))))
如果你想要一个随着额外的列增加而增长的公式,那就使用这个怪物:
=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行中有一个数字的最后一列,并将其用作结束列。