ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: yus99

[求助] 如何根据EXCEL回收答案进行评分

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-2-28 14:28 | 显示全部楼层
试试附件。
练习打分.rar (24.72 KB, 下载次数: 3)

TA的精华主题

TA的得分主题

发表于 2020-2-28 14:48 | 显示全部楼层
我又仔细看了一遍,应该能够自适应题目数量。如果楼主还有问题,建议上传出错文件。

练习打分.rar

68.01 KB, 下载次数: 3

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-28 15:35 | 显示全部楼层
micch 发表于 2020-2-27 22:11
源表那么多列,是不是很多是不用的?结果表空的列,是不需要计算的吗??

您好,源表中 有些数据是没有用的,但是导出就这样,就没有动表格

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-28 15:49 | 显示全部楼层
chxw68 发表于 2020-2-28 14:48
我又仔细看了一遍,应该能够自适应题目数量。如果楼主还有问题,建议上传出错文件。

非常感谢,的确可以。我以为评分页面是自动生成的,把题号删除了。如果增平均分和得分率,能不能麻烦处理一下?谢谢。!

增加了得分率和每题平均分

增加了得分率和每题平均分

TA的精华主题

TA的得分主题

发表于 2020-2-28 15:51 | 显示全部楼层
yus99 发表于 2020-2-28 15:49
非常感谢,的确可以。我以为评分页面是自动生成的,把题号删除了。如果增平均分和得分率,能不能麻烦处理 ...

评分页面无法自动生成,因为正确答案就在这个页面里呢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-28 16:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
增加了每题得分情况和得分率,怎么处理呢?谢谢大家
2020-02-28_153316.png

TA的精华主题

TA的得分主题

发表于 2020-2-28 16:06 | 显示全部楼层
  1. Sub test()
  2.   Dim r%, i%
  3.   Dim arr, brr, crr, drr()
  4.   Dim d As Object
  5.   Dim reg As New RegExp
  6.   Dim flg As Boolean
  7.   Set d = CreateObject("scripting.dictionary")
  8.   Set d1 = CreateObject("scripting.dictionary")
  9.   With reg
  10.     .Pattern = "^(\d+)\.题"
  11.   End With
  12.   With Worksheets("源作业")
  13.     r = .Cells(.Rows.Count, 1).End(xlUp).Row
  14.     c = .Cells(1, .Columns.Count).End(xlToLeft).Column
  15.     arr = .Range("a1").Resize(r, c)
  16.     For j = 1 To UBound(arr, 2)
  17.       Set mh = reg.Execute(arr(1, j))
  18.       If mh.Count > 0 Then
  19.         th = Val(mh(0).SubMatches(0))
  20.         d1(j) = th
  21.       End If
  22.     Next
  23.     For i = 2 To UBound(arr)
  24.       xm = arr(i, UBound(arr, 2))
  25.       If Not d.exists(xm) Then
  26.         ReDim brr(1 To th + 3)
  27.         brr(1) = xm
  28.       Else
  29.         brr = d(xm)
  30.       End If
  31.       For j = 8 To UBound(arr, 2) - 2
  32.         If d1.exists(j) Then
  33.           n = d1(j) + 1
  34.           If Len(arr(i, j)) <> 0 Then
  35.             brr(n) = brr(n) & Split(arr(i, j), ".")(1)
  36.           End If
  37.         End If
  38.       Next
  39.       d(xm) = brr
  40.     Next
  41.   End With
  42.   With Worksheets("评分")
  43.     c = .Cells(1, .Columns.Count).End(xlToLeft).Column
  44.     crr = .Range("a1").Resize(1, c)
  45.   End With
  46.   brr = Application.Transpose(Application.Transpose(d.items))
  47.   For j = 2 To UBound(brr, 2) - 2
  48.     For i = 1 To UBound(brr)
  49.       If Len(brr(i, j)) <> 0 Then
  50.         If Len(crr(1, j)) = 1 Then
  51.           If brr(i, j) = crr(1, j) Then
  52.             brr(i, j) = "5|" & brr(i, j)
  53.           Else
  54.             brr(i, j) = "0|" & brr(i, j)
  55.           End If
  56.         Else
  57.           If Len(brr(i, j)) = Len(crr(1, j)) Then
  58.             If brr(i, j) = crr(1, j) Then
  59.               brr(i, j) = "5|" & brr(i, j)
  60.             Else
  61.               brr(i, j) = "0|" & brr(i, j)
  62.             End If
  63.           ElseIf Len(brr(i, j)) > Len(crr(1, j)) Then
  64.             brr(i, j) = "0|" & brr(i, j)
  65.           Else
  66.             flg = True
  67.             For k = 1 To Len(brr(i, j))
  68.               ch = Mid(brr(i, j), k, 1)
  69.               If InStr(crr(1, j), ch) = 0 Then
  70.                 flg = False
  71.                 Exit For
  72.               End If
  73.             Next
  74.             If flg Then
  75.               brr(i, j) = "2|" & brr(i, j)
  76.             Else
  77.               brr(i, j) = "0|" & brr(i, j)
  78.             End If
  79.           End If
  80.         End If
  81.       End If
  82.     Next
  83.   Next
  84.   For i = 1 To UBound(brr)
  85.     For j = 2 To UBound(brr, 2) - 2
  86.       brr(i, UBound(brr, 2) - 1) = brr(i, UBound(brr, 2) - 1) + Val(brr(i, j))
  87.     Next
  88.     brr(i, UBound(brr, 2)) = Round(brr(i, UBound(brr, 2) - 1) / (th * 5), 4)
  89.   Next
  90.   ReDim drr(1 To UBound(brr, 2))
  91.   drr(1) = "每题平均分"
  92.   For j = 2 To UBound(brr, 2) - 1
  93.     For i = 1 To UBound(brr)
  94.       drr(j) = drr(j) + Val(brr(i, j))
  95.     Next
  96.   Next
  97.   For j = 2 To UBound(drr) - 1
  98.     drr(j) = Round(drr(j) / UBound(brr), 2)
  99.   Next
  100.   drr(UBound(drr)) = Round(drr(UBound(drr) - 1) / (th * 5), 4)
  101.   With Worksheets("评分")
  102.     .UsedRange.Offset(2, 0).ClearContents
  103.     .Columns(UBound(brr, 2)).NumberFormatLocal = "0.00%"
  104.     .Range("a3").Resize(1, UBound(drr)) = drr
  105.     .Range("a4").Resize(UBound(brr), UBound(brr, 2)) = brr
  106.     With .Range("a1").Resize(UBound(brr) + 3, UBound(brr, 2))
  107.       .Borders.LineStyle = xlContinuous
  108.     End With
  109.     With .UsedRange
  110.       .HorizontalAlignment = xlCenter
  111.       .VerticalAlignment = xlCenter
  112.     End With
  113.   End With
  114. End Sub


复制代码

TA的精华主题

TA的得分主题

发表于 2020-2-28 16:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
详见附件。

练习打分.rar

70.28 KB, 下载次数: 9

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-28 16:21 | 显示全部楼层
非常感谢!完美至极!谢谢!解决了我好多天的困扰啊!

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-3 12:42 | 显示全部楼层

非感谢,老师们看到我用后,有些科目老师也想用,但是由于学科分值不同,处理就很麻烦,加了设置,如果这样处理能就可以其他科也可以解决了。谢谢。

选择题数不定

选择题数不定
结果.png

求助自动批阅选择题.rar

40.48 KB, 下载次数: 1

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

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-24 12:39 , Processed in 0.043734 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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