ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 501|回复: 21

[分享] 选修课成绩 T 分计算

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-8-31 06:35 | 显示全部楼层 |阅读模式
T 分标准和段数,可自由设置,学科数量,6科 、7科 ...... 只要二表稍作对应的修正,代码只修改一个数字即可!

Sub kscj_to_tjf()
    ' 2024-8-30
    ' 名称:考试成绩 转换成 等级分
    ' 思路:1、计算等级分区间; 2、计算等级分
    '
    ' 重要说明:成绩表上的学科从左到排列顺序与区间标准表上的学科排列顺序要一致,
    '           学科可以是6个,也可是7个,二表设置好后,只要修改 变量 KMS 的值即可
    '
    Sheet2.Activate
    Dim Arr, Brr, Crr, M, Lfgs, Zrs, S1, S2, S, T, T1, T2, Kms, Jsh

    Kms = 6   ' *******需要划分成绩的学科数。请根据实际学科的数量修改***********

    Sheet2.[F6].Resize(20, 14) = ""
    Arr = Sheet1.[A1].CurrentRegion         ' 原始成绩存入数组 Arr
    Jsh = UBound(Arr)
    For y = 1 To Kms   ' 按选修的课目数循环,即依次处理每一个学科
      ReDim Brr(1 To UBound(Arr) - 1, 1 To 2)
      Lfgs = 0
      For x = 2 To UBound(Arr)
        Brr(x - 1, 1) = Arr(x, y + 6)       ' 将一个学科的原始成绩写入到Brr中
        If Arr(x, y + 6) = 0 Then
          Lfgs = Lfgs + 1
        End If
      Next x
      For i = 1 To UBound(Brr)
        For j = i To UBound(Brr)
          If Brr(i, 1) < Brr(j, 1) Then
            temp = Brr(j, 1)
            Brr(j, 1) = Brr(i, 1)
            Brr(i, 1) = temp
          End If
        Next j
      Next i    ' 对一课的成绩完成排序
      Zrs = UBound(Brr) - Lfgs    ' 成绩不为 0 的人数
      x2 = 6
      S2 = 200
      Do While Not (IsEmpty(Sheet2.Cells(x2, 1).Value))
        ReDim Crr(1 To Zrs / 2, 1 To 2)
        tjrs = Int(Zrs * Sheet2.Cells(x2, 3).Value + 0.5)
        S1 = Brr(tjrs, 1)
        Sheet2.Cells(x2, y * 2 + 5).Value = S1      ' 记录某科的S1分值
        M = 1
        For i = 1 To UBound(Brr)
          If Brr(i, 1) < S2 And Brr(i, 1) >= S1 Then
            Crr(M, 1) = Brr(i, 1)
            M = M + 1
          End If
        Next i
        Sheet2.Cells(x2, y * 2 + 4).Value = Crr(1, 1)     ' 记录某科的S2分值
        S2 = S1
        Erase Crr
        Set Crr = Nothing
        x2 = x2 + 1
      Loop
      Erase Brr
      Set Brr = Nothing
    Next y
    Erase Arr
    Set Arr = Nothing
    Set Brr = Nothing
    Set Crr = Nothing
'End Sub
'Sub 计算等级分()
    ' 2024-8-30
    ' 计算每个学生的每一个学科的等级分
    '
    Sheet1.Activate
    Range(Cells(2, 7), Cells(Jsh, Kms + 6)).Interior.ColorIndex = xlNone
    [M2].Resize(Jsh, Kms + 1) = ""
    'Dim kms, T, T1, T2, S, S1, S2
    'kms = 6
    For y = 1 To Kms
      x1 = 2
      Do While Not (IsEmpty(Sheet1.Cells(x1, 2).Value))
        S = Sheet1.Cells(x1, y + 6).Value
        If S = 0 Then
          Sheet1.Cells(x1, y + 6).Select
          Selection.Interior.ColorIndex = 6
          GoTo 99          ' 成绩为 0 ,跳过区间分的比对,并染上背景色
        End If
        x2 = 6
        Do While Not (IsEmpty(Sheet2.Cells(x2, 4).Value))
          S2 = Sheet2.Cells(x2, y * 2 + 4).Value
          S1 = Sheet2.Cells(x2, y * 2 + 5).Value
          T2 = Sheet2.Cells(x2, 4).Value
          T1 = Sheet2.Cells(x2, 5).Value
          If S >= S1 And S <= S2 Then
            If S1 = S2 Then
              Sheet1.Cells(x1, y + 6 + Kms).Value = T2
            Else
              Sheet1.Cells(x1, y + 6 + Kms).Value = Int(((S2 - S) * T1 + (S - S1) * T2) / (S2 - S1) + 0.5)
            End If
          End If
          x2 = x2 + 1
        Loop
99        x1 = x1 + 1
      Loop
    Next y
    Range("A1").Select
    MsgBox "等级分计算完成 !"
End Sub


教务三板斧-六选三成绩划等.rar

61.5 KB, 下载次数: 30

TA的精华主题

TA的得分主题

发表于 2024-10-26 00:55 | 显示全部楼层
帅哥你好,你的作品非常好但是,出现了赋分不连续的情况,比如99以后应该是对应98,但是出现了99之后是97的情况,类似比较多,如何理解呢?谢谢

TA的精华主题

TA的得分主题

发表于 2024-10-26 00:57 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-28 08:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
wtqzhjb 发表于 2024-10-26 00:57
现在新的赋分公式是:(S2-S)/(S-S1)=(T2-T)/(T-T1)

终于看到一个知音了。
是按这个公式计算的,你说的情况 估计是原始分跳跃度较大吧,你可以手工算一算,以资验证

TA的精华主题

TA的得分主题

发表于 2024-10-28 16:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请教:区间标准表的的权重是怎么取值的?

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-28 16:19 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-10-28 16:21 | 显示全部楼层
wengjl 发表于 2024-10-28 16:19
在文档的第二张表上,由你设置的

权重设置有什么依据吗?新高考赋分规则中没有提到啊

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-28 16:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

TA的精华主题

TA的得分主题

发表于 2024-10-28 22:17 | 显示全部楼层
wengjl 发表于 2024-10-28 16:56
https://www.dxsbb.com/news/128162.html

:handshak非常感谢帅哥,您的方案与我们是一样的结果,非常好
现在,存在另一种情况,就是对于外部联合考试,存在别人只给了赋分表,我们的分数没有纳入别人的成绩一起赋分,需要根据别人的赋分表,一一对应原始分的赋分,查找并返回赋分结果到自己的分数上,如何实现呢,谢谢,见附件

TA的精华主题

TA的得分主题

发表于 2024-10-28 22:19 | 显示全部楼层
从赋分表中查找左侧原始分在赋分表的结果,按照学科对应填入到赋分区域,谢谢

查找返回式赋分.rar

32.3 KB, 下载次数: 7

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

本版积分规则

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

GMT+8, 2024-11-22 03:08 , Processed in 0.038231 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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