0 worksheet-function microsoft-excel
我有一个 Excel 表格,我可以在其中输入学生测试答案,如下所示:
并将这些答案与正确答案进行比较:
如果学生的答案是正确的(例如答案 1),我知道如何使用 IF 函数在单元格中输出“CORRECT”,否则会吐出“INCORRECT”。
我似乎无法找到一个公式,如果正确,它会吐出“正确”(1);'INCORRECT' 如果错误 (2); 'MISTAKE' 如果学生答对了其中一个,但同时答错了另一个选项 (3);如果学生回答正确但错过了答案 (4),则为“错过”。
有没有办法做到这一点?我试过使用通配符和计数,但它超出了我的 Excel 水平。
在此先感谢您的帮助!
解决方案
让我们像这样用二进制表示答案,位序为 EDCBA,即
01010
Run Code Online (Sandbox Code Playgroud)
意味着答案是
B,D
Run Code Online (Sandbox Code Playgroud)
要转换文本答案(学生或答题纸),我们使用
=ISNUMBER(SEARCH("A", A1))*2^0 + ISNUMBER(SEARCH("B", A1))*2^1 + ISNUMBER(SEARCH("C", A1))*2^2 + ISNUMBER(SEARCH("D", A1))*2^3 + ISNUMBER(SEARCH("E", A1))*2^4
Run Code Online (Sandbox Code Playgroud)
现在来比较。假设我们有 C1 正确答案和 D1 学生答案,两者都是使用上述公式的“按位”形式。然后
=IF(C1 = D1, "Correct", IF(BITAND(BITXOR(C1,D1),C1)=C1, "Incorrect", IF(BITAND(BITXOR(C1,D1),C1)=BITXOR(C1,D1), "Missing", "Mistake")))
Run Code Online (Sandbox Code Playgroud)
说明
我可以试着解释一下,但我必须先杀了你,然后再杀了我自己。也许我可以尝试...将检测“错误”视为困难的错误会有所帮助,因此将其留给 if 的最后一个“全部捕获”情况。考虑跳过这个以支持下图:
X XOR Y is a list of differences between lists X and Y
X AND Z = X means the list Z must at least contain everything in list X
X AND Z = Z means the list X must at least contain everything in list Z
Now lets say X is the list of correct answers (CA), Y is list of the student's answers (SA). Then:
Z = X XOR Y is a list of differences between CA and SA
If Z = 0 then the list is empty and CA = SA i.e. "Correct", else if
X AND Z = X
then the list of differences must contain at least everything in list of correct answers (i.e. no correct answers = "incorrect"), else if
X AND Z = Z
then the list of correct answers must contain at least everything in the list of differences (i.e. no wrong answers = "missing", one or more correct), else
NOT(all of the above)
then one or more correct answer and one or more incorrect answer = "Mistake".
Run Code Online (Sandbox Code Playgroud)
TL; 博士
如果你画它实际上很容易(睡觉后的洞察力!):
| 归档时间: |
|
| 查看次数: |
212 次 |
| 最近记录: |