Excel,Libreoffice / OpenOffice Calc:计数“正确”的答案

我有一张桌子,上面有20个math问题的答案:

      A |  B |  C |  D |  E | ...
 ------------ + ----- + ----- + ----- + ----- + ...
问题没有|  1 |  2 |  3 |  4 | ...
 ------------ + ----- + ----- + ----- + ----- + ...
正确答案|  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))+ ... 

…但这不是最好的方法:)

这是SUMPRODUCT的典型用例:

  ABCDEFG 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 = $ B3,$ C $ 2 = $ C3,$ D $ 2 = $,$ B $ 2:$ E $ 2 = $ B3:$ E3成为{TRUE,FALSE,TRUE,FALSE}的matrixD3,$ E $ 2 = $ E3。

在Libreoffice或Openoffice中,TRUE为1,FALSE为0.所以SUMPRODUCT总和为TRUE。

在Excel中,您必须首先在数字上下文中获取布尔值。 所以在Excel中的公式将是=SUMPRODUCT(($B$2:$E$2=$B3:$E3)*1)

第3行中的公式可以填写所有学生行。 行号2之前的$确保了,因此正确答案的行不会改变。

问候

阿克塞尔