ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何根据参数表中各学科等级比例分按班级按年级两种类型将分数变等级

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-5-7 08:56 | 显示全部楼层 |阅读模式
原始表中为各学科原始分数,参数表中设置各学科分数转化为等级的比例,如语文学科,分三个等级优秀,良好,合格,优秀占30%,良好占40%,合格占30%。
分两种情况转化为等级。
按年级,即将语文成绩从高到低排,从高到低取600*30%=180人为优秀,四舍五入;600*40%=240为良好,四合五入,600*30%=180为合格,剩下的为最后一个等级。
按班级,即将原始表按班级,按语文成绩从高到低排,从高到低取,如1班为41人,41*30%=12.3,取12人,语文为优秀,41*40%=16.4,取16人,语文为优秀,剩下的13人为合格。最后的按年级,按班级目标册,顺序均按原始表的顺序。 如何根据参数表中各学科等级比例分按班级按年级两种类型将分数变等级.rar (34.85 KB, 下载次数: 36)

TA的精华主题

TA的得分主题

发表于 2014-5-8 08:17 | 显示全部楼层
临界点上有并列的怎么选?比如算出来前120人为优秀,但到120人时,可能并列的有好几个人,这些人都算优秀呢?还是算到良好里面呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-5-8 08:42 | 显示全部楼层
chxw68 发表于 2014-5-8 08:17
临界点上有并列的怎么选?比如算出来前120人为优秀,但到120人时,可能并列的有好几个人,这些人都算优秀呢 ...


感谢大师关注,要考虑分两种情况设计程序。第一种情况,严格按人数,算到良好,最后剩余的,算到合格;第二种按名次,算到优秀,最后剩余的,算到合格。

TA的精华主题

TA的得分主题

发表于 2014-5-8 08:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
把你的成绩表发上来,要用到原来的排名数组来取数,如200人优秀,前200名的学生即为优秀。

TA的精华主题

TA的得分主题

发表于 2014-5-8 08:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
yzyyyyyyy 发表于 2014-5-8 08:42
感谢大师关注,要考虑分两种情况设计程序。第一种情况,严格按人数,算到良好,最后剩余的,算到合格; ...

呵呵,同是考了90分,甲是优秀,乙是良好,这也太不公平了吧?我还没见过这么计算优秀、良好的。

TA的精华主题

TA的得分主题

发表于 2014-5-8 09:15 | 显示全部楼层
chxw68 发表于 2014-5-8 08:49
呵呵,同是考了90分,甲是优秀,乙是良好,这也太不公平了吧?我还没见过这么计算优秀、良好的。

他应该不是这个意思
比如有10个人  按343比例 按比例确定累计人数分界点为 3,7,10那么就容易了
实际结果的名次分界线 是这样子了
优秀=3人 若有并列 同名次可超出原定范围3 并列为优秀,比如2人并列第一,2人并列第二,那么就是4个人优秀 此时侵占了良好名额一个 良好名额即只剩下3个
如果前面有7个并列第一 那么直接侵占了所有良好名额 那么就只剩下最后3个属于合格
良好算法以此相同吧

TA的精华主题

TA的得分主题

发表于 2014-5-8 10:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
思路:
1、将成绩数据装入数组
2、计算排名和各科参考人数
3、把参数装入字典
4、得出结果

TA的精华主题

TA的得分主题

发表于 2014-5-8 12:03 | 显示全部楼层
1、按列循环
2、各列排序
3、各列按343比例填充“优秀”“良好”“合格”
4、结束循环
5、按原名单顺序排序

TA的精华主题

TA的得分主题

发表于 2014-5-8 13:34 | 显示全部楼层
按年级的。。。。。
  1. Sub 按年级()
  2.     Dim N
  3.     r = [c65536].End(3).Row
  4.     arr = [a1].CurrentRegion
  5.     brr = arr
  6.     N = UBound(arr) - 1 '年级总人数
  7.     yx = Round(N * 0.3, 0)   '按比例优秀人数
  8.     lh = Round(N * 0.4, 0)   '按比例良好人数
  9.     For j = 4 To 12
  10.         If j <> 7 And j <> 8 Then '物理、化学无数据
  11.             xyx = 0: xlh = 0 '总优秀人数、总良好人数
  12.             For i = 2 To N
  13.                 Set xrng = Range(Cells(2, j), Cells(N + 1, j))
  14.                 xrank = Application.WorksheetFunction.Rank(arr(i, j), xrng) '名次
  15.                 If xrank <= yx And xyx < yx Then          '如果名次为优秀,总优秀人数小于按比例优秀人数
  16.                     brr(i, j) = "优秀"
  17.                     xyx = xyx + 1
  18.                     '如果名次为优秀,总优秀人数等于按比例优秀人数,或者名次为良好,总良好人数小于按比例良好人数
  19.                 ElseIf (xrank <= yx And xyx = yx) Or (xrank <= yx + lh And xlh < lh) Then
  20.                     brr(i, j) = "良好"
  21.                     xlh = xlh + 1
  22.                 Else
  23.                     brr(i, j) = "合格"
  24.                 End If
  25.             Next
  26.         End If
  27.     Next
  28.     Sheet2.[a1].Resize(N + 1, 12) = brr
  29.     Sheet2.Activate
  30. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2014-5-8 13:36 | 显示全部楼层
请看附件。按班级的有空再说了。道理一样的,多加几个判断、循环而已。

1.rar

47.26 KB, 下载次数: 41

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-19 08:26 , Processed in 0.042497 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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