ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 征求学生的成绩转换成等级的方法(大头、一剑给了很好的方法)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-8-5 15:02 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
征求学生的成绩转换成等级的方法
一个班级共有9门课程,包括总分需要转换10项,总分各不相同,有120、50、70、680
转换标准按权重计算,即分别按每项总分的0.9、0.8、0.7、0.6、0.5、0.3及以下转换成A+  A   B+   B   C+  C  D
具体标准和成绩见下表和附件。可以用if函数,也可以用index、vlookup、lookup等等,既然是征求方法,那就请大家各抒己见。
因为不只是一个科目,所以本题有一定的难度和技巧。                                                       
                                                               
                                                       
科目        总分                        等级转换标准                       
语文        120                        满分        120               
数学        120                        权重        开始(>=)         结束        等级
英语        120                        0.9        108        120        A+
政治        50                        0.8        96        108        A
历史        50                        0.7        84        96        B+
地理        50                        0.6        72        84        B
生物        50                        0.5        60        72        C+
物理        70                        0.3        36        60        C
化学        50                                0        36        D
总分        680                                               
                                                       
                                                       
成绩的等级转换.rar (37.86 KB, 下载次数: 155)

[ 本帖最后由 lhx120824 于 2010-8-5 22:17 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-8-5 15:23 | 显示全部楼层
提示:
可以对
标准工作表进行改进,以方便引用查找,缩短公式长度。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-8-5 15:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本人先给出一种方法:用 INDEX+MATCH
s3=INDEX(标准!$U$3:$U$9,MATCH(1,(D3>=标准!K$3:K$9)*(D3<=标准!K$2:K$8),0))
先右拉再双击填充柄自动向下填充。

成绩的等级转换用index.rar (45.67 KB, 下载次数: 129)

构造标准表格如下:
科目        语文        数学        英语        政治        历史        地理        生物        物理        化学        总分       
满分        120        120        120        50        50        50        50        70        50        680        等级
0.9        108        108        108        45        45        45        45        63        45        612        A+
0.8        96        96        96        40        40        40        40        56        40        544        A
0.7        84        84        84        35        35        35        35        49        35        476        B+
0.6        72        72        72        30        30        30        30        42        30        408        B
0.5        60        60        60        25        25        25        25        35        25        340        C+
0.3        36        36        36        15        15        15        15        21        15        204        C
        0        0        0        0        0        0        0        0        0        0        D

[ 本帖最后由 lhx120824 于 2010-8-5 15:52 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-8-5 16:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
学习了,
Sub dengji()
Application.ScreenUpdating = False    '关闭屏幕刷新
  Dim ary1 As Range
    Dim ary()
    p = Sheets("成绩").[a65536].End(xlUp).Row
    ReDim ary(1 To 10)
    For j0 = 1 To 10
        ary(j0) = Sheets("标准").Cells(j0 + 1, 2)
    Next j0
    For j = 4 To 13
        mf = ary(j - 3)
        For i = 3 To p
            If Cells(i, j) >= 0.9 * mf And Cells(i, j) <= mf Then
                Cells(i, j + 15) = "A+"
            ElseIf Cells(i, j) >= 0.8 * mf And Cells(i, j) < 0.9 * mf Then
                Cells(i, j + 15) = "A"
            ElseIf Cells(i, j) >= 0.7 * mf And Cells(i, j) < 0.8 * mf Then
                Cells(i, j + 15) = "B+"
            ElseIf Cells(i, j) >= 0.6 * mf And Cells(i, j) < 0.7 * mf Then
                Cells(i, j + 15) = "B"
            ElseIf Cells(i, j) >= 0.5 * mf And Cells(i, j) < 0.6 * mf Then
                Cells(i, j + 15) = "C+"
            ElseIf Cells(i, j) >= 0.3 * mf And Cells(i, j) < 0.5 * mf Then
                Cells(i, j + 15) = "C"
            ElseIf Cells(i, j) >= 0 And Cells(i, j) < 0.3 * mf Then
                Cells(i, j + 15) = "D"
            End If
        Next i
    Next j
    Application.ScreenUpdating = True   '关闭屏幕刷新
End Sub

成绩的等级转换.rar

45.13 KB, 下载次数: 84

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-8-5 16:31 | 显示全部楼层
原帖由 lzqlaj 于 2010-8-5 16:13 发表
学习了,
Sub dengji()
Application.ScreenUpdating = False    '关闭屏幕刷新
  Dim ary1 As Range
    Dim ary()
    p = Sheets("成绩").[a65536].End(xlUp).Row
    ReDim ary(1 To 10)
    For j0 = 1 T ...

宏的代码经修改原始成绩后再执行宏,运行正确。

TA的精华主题

TA的得分主题

发表于 2010-8-5 16:42 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-8-5 17:34 | 显示全部楼层
先学习两个函数的帮助,再在编辑栏中运用f9键查看你不理解的部分,看出现什么结果,公式的理解要慢慢来。

TA的精华主题

TA的得分主题

发表于 2010-8-5 18:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
s3=INDEX(标准!$U$3:$U$9,MATCH(D3,标准!K$2:K$8,-1))

TA的精华主题

TA的得分主题

发表于 2010-8-5 18:40 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-8-5 18:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
完全正确,即简单易懂又不是数组公式,谢谢提供。你的其他的方法呢?

[ 本帖最后由 lhx120824 于 2010-8-5 18:55 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-7 03:58 , Processed in 0.059413 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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