2014-10-27 73 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