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之前的$确保了,因此正确答案的行不会改变。
问候
阿克塞尔