2014-10-27 50 views
0

我有一个学生表回答20道数学题是这样的:Excel中的LibreOffice/OpenOffice的计算:计数“正确”的答案

 
    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

你可以凝结在Excel 2007及更高版本使用'= COUNTIFS()'它看起来像'= COUNTIFS(d $ 3 D4,E $ 3 E5,F位$ 3,F4,...)不知道LibreOffice是否有类似的功能。想一想,你可以在这里使用一些布尔逻辑,并执行'=(D $ 3 = D5)+(E $ 3 = E5)+(F $ 3 = F5)+ ...'每个项目将返回0或1并添加到总数中。 – JNevill 2014-10-27 14:00:48

回答

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

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

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

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

问候

阿克塞尔

+0

效果很好,谢谢!有一些额外的$符号可以删除e g = SUMPRODUCT(B $ 2:E $ 2 = B3:E3) – zuups 2014-10-27 20:52:44