Excel,Libreoffice / Openoffice Calc:计算“正确”的答案

时间:2014-10-27 10:51:08

标签: excel libreoffice-calc

我有一张表,学生可以回答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))+...
......但这不是最好的方式:)

1 个答案:

答案 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行前面的$确保了右边答案的行不会改变。

问候

阿克塞尔