我有一张表,学生可以回答20个这样的数学问题:
A | B | C | D | E |... ------------+-----+-----+-----+-----+... problem no | 1 | 2 | 3 | 4 |... ------------+-----+-----+-----+-----+... right answer| 3 | 2 | A | 15 |... ------------+-----+-----+-----+-----+... student1 | 3 | 4 | A | 12 |... student2 | 2 | 2 | C | 15 |... student3 | 3 | 2 | A | 13 |...
现在需要一个为每个学生计算“正确”答案的专栏。
我可以这样做:
=(IF(D$3=D5;1;0))+(IF(E$3=E5;1;0))+(IF(F$3=F5;1;0))+.........但这不是最好的方式:)
答案 0 :(得分:1)
这是SUMPRODUCT的典型用例:
A B C D E F G
1 problem no 1 2 3 4
2 right answer 3 2 A 15 right answers per student
3 student1 3 4 A 12 2
4 student2 2 2 C 15 2
5 student3 3 2 A 13 3
Formula in G3:
=SUMPRODUCT($B$2:$E$2=$B3:$E3)
如果有更多问题编号,则必须增加$ E $ 2和$ E3中的列字母。
工作原理: SUMPRODUCT将其内部函数作为数组公式。所以$ B $ 2:$ E $ 2 = $ B3:$ E3成为{TRUE,FALSE,TRUE,FALSE}的矩阵,具体取决于$ B $ 2 = $ B3,$ C $ 2 = $ C3,$ D $ 2 = $ D3,$ E $ 2 = $ E3。
在Libreoffice或Openoffice中,TRUE为1,FALSE为0.因此SUMPRODUCT对所有TRUE进行求和。
在Excel中,您必须首先在数字上下文中获取布尔值。因此,Excel中的公式将为=SUMPRODUCT(($B$2:$E$2=$B3:$E3)*1)
。
然后可以为所有学生行填写第3行中的公式。第2行前面的$确保了右边答案的行不会改变。
问候
阿克塞尔