Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5150|回复: 11

[已解决]求大神们一个多项选择题得分统计公式

[复制链接]
发表于 2016-3-14 15:27 | 显示全部楼层 |阅读模式
这道题有5个选项 (选择用1未选用0表示)标准答案如附件中是11100,赋分是2分(选对得2分,漏选得1分,有错选则0分)。求大神们帮助我写个公式。
最佳答案
2016-3-14 16:34
百度的:http://club.excelhome.net/thread-895989-1-1.html
看到有点长的函数,就 。。。。。。。
所以,写了个自定义函数


'功能:求多项选择的得分
Function getScore(rng As Range, answer As Range) As Integer
    Dim i As Integer, ans As Integer, x

    getScore = 2
    For Each x In rng
        i = i + 1
        ans = Mid(answer, i, 1)
        '当不一致时,如果是1只扣分,否则得0并结束。
        If x <> ans Then If ans = 1 Then getScore = getScore - 1 Else getScore = 0: Exit For
    Next
End Function
多选判断题判卷2.rar (3.92 KB, 下载次数: 10)

多选题得分.rar

1.78 KB, 下载次数: 13

求得分公式

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-3-14 15:36 | 显示全部楼层
回复

使用道具 举报

发表于 2016-3-14 15:39 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2016-3-14 15:40 | 显示全部楼层
huangcaiguang 发表于 2016-3-14 15:36
看不懂

这只是这40个人做的第一题,标准答案是11100(ABC)(111也就是ABC,00也就是D和E),第二个人答题是(11100也就是ABC)做对了 得2分,第3-6人选择10100(AC)所以得1分 第11人选择01110(BCD)得0分,这样。
回复

使用道具 举报

 楼主| 发表于 2016-3-14 15:41 | 显示全部楼层
爱疯 发表于 2016-3-14 15:39
手动给几个得分看看。

这只是这40个人做的第一题,标准答案是11100(ABC)(111也就是ABC,00也就是D和E),第二个人答题是(11100也就是ABC)做对了 得2分,第3-6人选择10100(AC)所以得1分 第11人选择01110(BCD)得0分,这样。
回复

使用道具 举报

 楼主| 发表于 2016-3-14 15:43 | 显示全部楼层
也就是这样赋分,但是有40人 80道多选题
捕获.PNG
回复

使用道具 举报

发表于 2016-3-14 16:25 | 显示全部楼层
=IF(SUM(A2:E2*10^(5-COLUMN($A$1:$E$5)))=F2,2,IF(SUM(--(MID(F2,ROW($A$1:$A$5),1)="0")*(--MID(F2,ROW($A$1:$A$5),1)<>TRANSPOSE(A2:E2)))>0,0,IF(SUM(--(MID(F2,ROW($A$1:$A$5),1)="1")*(--MID(F2,ROW($A$1:$A$5),1)=TRANSPOSE(A2:E2)))>0,1)))
這麼長.都有點不好意思貼出來了.{:011:}

多选题得分.rar

3.24 KB, 下载次数: 2

回复

使用道具 举报

发表于 2016-3-14 16:27 | 显示全部楼层
=IF(SUM(A2:E2*10^(5-COLUMN($A$1:$E$5)))=F2,2,IF(SUM(--(MID(F2,ROW($A$1:$A$5),1)="0")*(--MID(F2,ROW($A$1:$A$5),1)<>TRANSPOSE(A2:E2)))>0,0,1))
後面一個判斷可以省略..少一點.{:011:}
回复

使用道具 举报

发表于 2016-3-14 16:34 | 显示全部楼层    本楼为最佳答案   
百度的:http://club.excelhome.net/thread-895989-1-1.html
看到有点长的函数,就 。。。。。。。
所以,写了个自定义函数


'功能:求多项选择的得分
Function getScore(rng As Range, answer As Range) As Integer
    Dim i As Integer, ans As Integer, x

    getScore = 2
    For Each x In rng
        i = i + 1
        ans = Mid(answer, i, 1)
        '当不一致时,如果是1只扣分,否则得0并结束。
        If x <> ans Then If ans = 1 Then getScore = getScore - 1 Else getScore = 0: Exit For
    Next
End Function
多选判断题判卷2.rar (3.92 KB, 下载次数: 10)
回复

使用道具 举报

发表于 2016-3-14 16:36 | 显示全部楼层
心正意诚身修 发表于 2016-3-14 16:27
=IF(SUM(A2:E2*10^(5-COLUMN($A$1:$E$5)))=F2,2,IF(SUM(--(MID(F2,ROW($A$1:$A$5),1)="0")*(--MID(F2,ROW($ ...

發現不能省.如果省了..該對了,全漏了也能拿一分..樓上的才完善.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 07:42 , Processed in 0.430257 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表