设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2722|回复: 0
打印 上一主题 下一主题

[VBA编程/宏] [转帖]Excel中如何计算后10%学生的平均分

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2004-5-14 20:09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
作者:张智聪、张崇文  出处:中国电脑教育报



很多学校对教学成绩的量化越来越科学、越来越规范,笔者所在地区在考核班级成绩时就分为平均分、优秀率、及格率、后10%学生的平均分、进步幅度五大部分。对笔者来说,计算平均分、优秀率、及格率、进步幅度都不在话下,但计算后10%学生的平均分,着实叫人为难。一是各班学生数都不一样,多的40多人,少的仅20多人,很难把各班后10%“一刀切下”;二是想编写程序吧,对我等菜鸟来说又太困难。难道就只有把每一科的成绩都按从高到低的顺序排下来,然后一个班一个班地处理吗?这样一来,学生分数全打乱不说,单是我镇一共有六个年级,每个年级有二十几个班,每个班平均四个单科,那工作量……



  后来,笔者终于想出了一个办法,为讲解方便,笔者以只有两个单科的二年级为例。



  1. 用函数count计算出每个班级的学生数,进而计算出后10%一共有多少个学生。



  (1)选中所有工作表,然后选中E51单元格(行数一定要大于最大班学生数)。



  (2)在E51单元格内输入“=round(count(C2:C50)*0.1)”。其中函数round是用来取整的(如图1)。













图1 计算学生数









  2. 用函数small从每科成绩中取出5个小分,并从小到大编上序号。



  (1)在G52~G56单元格中输入1~5,然后依次在H52~H56中输入“=small(C2:C50,1)”,“=small(C2:C50,2)”,…,“=small(C2:C50,5)”(如图2)。













图2 编序号





  (2)将H52~H56复制到I列相应单元格,得到第二个单科的5个小分。



  3. 用函数if把不需要的分数置零。



  (1)依次在E52~E56单元格中输入“=if(G52<=E51,H52,0)”,“=if(G52<=E51,H53,0)”,…,“=if(G52<=E51,H56,0)”(如图3)。为了保证对单元格“E51”的绝对引用,可以把公式中的“E51”换成“$E$51”。















图3 把不需要的分数置零



  (2)同样将E52~E56复制到F列相应单元格,得到第二个单科后10% 的分数。



  4. 计算最终想要的后10%学生的平均分。



  (1)在C51单元格中输入“=sum(E52:E56)/$E$51”。



  (2)将C51复制到D51,最后结果如图4所示。

[此贴子已经被作者于2004-5-14 12:12:04编辑过]

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-6 15:20 , Processed in 0.091420 second(s), 24 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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