关于excel中vba宏的编写

有一个学生成绩汇总的数据,
由于每个学期都需要进行数据统计汇总的工作
,所以希望能编写一个Excel VBA的宏,
自动完成如下任务:
把学生不及格的科目单元格背景标为红色
统计各科总人数、及格人数、得零分人数、
平均分及不及格的学生人数,
记录到统计表中。

请各路高手多多指教!
不甚感激!

一定要求用编程的方式!

Excel统计学生成绩时的四个难题及解决(1)
一、前言
对于教师而言,经常需要用Excel进行学生成绩统计,会被一些常见问题难住。碰到的难题主要有:如何统计不同分数段人数、如何在保持学号不变前提下进行排名、如何将百分制转换成不同分数段与如何用红色显示不及格的分数等,本文着重对这些问题的解决方法与技巧加以分析和讨论。
本文假设读者已对Excel的基本操作已经有一定基础,已经掌握如何进行求和、求平均和如何使用自动填充柄进行复制公式等操作,本文对这些一般性操作不做详细介绍,仅对一些难度较大的操作技巧进行讨论。
二、Excel统计学生成绩时的四个难题
假设在统计学生成绩时,我们需要统计出如图1所示的相关结果。

图1 学生成绩统计所需要的结果图
这里,假设学号、姓名、成绩等列及行15都已经事先输好,需要让Excel统计其他的相关数据结果。这时,成绩统计中主要难解决的问题及它们在图中的位置如下:
问题1:如何统计不同分数段的学生人数?(图中A16~E16)
问题2:如何在保持学号顺序不变的前提下进行学生成绩名次排定?(图中F2~F13)
问题3:如何将百分制转换成不同的等级分?(图中“等级1”与“等级2”列)
问题4:如何使不及格的分数以红色显示?(图中红色显示部分,即第12行)

三、解决统计学生成绩时的四个难题的方法
下面,针对上面提出的四个难题分别讨论解决的方法与技巧。
1、统计不同分数段的学生人数
统计不同分数段的学生人数是非常常见的需求,其所需结果如图1中A16~E16所示。这里,假设需要统计90~100、80~89、70~79、60~69及低于60分五个不同分数段的人数。
通常,统计不同分数段最好的方法是利用COUNTIF(X,Y)函数。其中有两个参数,第一个参数X为统计的范围,一般最好用绝对引用;第二个参数Y为统计条件,要加引号。
对于小于60分的人数只要用一个COUNTIF( )函数,如在E16单元格中输入公式:=COUNTIF($C$2:$C$13,"<60")。
对于其他在两个分数之间的分数段的人数统计,需要用两个COUNTIF( )函数相减。如在A16单元格中输入公式:=COUNTIF($C$2:$C$13,"<=100")-COUNTIF($C$2:$C$13,"<90"),即用小于等于100的人数减去小于90的人数。
如果要统计80~89、70~79与60~69分数段的人数,只要利用自动填充柄将该公式复制到右边三个单元格,再把"<=100"与"<90"作相应的修改,就可以得到正确的结果。
2.保持学号顺序不变的前提下进行成绩排名
学生成绩排定在学生成绩统计中经常用到。特别要强调的是,这里所谈的方法不是一般的排序,因为那样会使学生的学号顺序发生变化。这里所需要的是在保持学号顺序不变的情况下进行学生成绩名次排定的功能,其所需结果如图1中F2~F13所示。
Excel统计学生成绩时的四个难题及解决(1)
一、前言
对于教师而言,经常需要用Excel进行学生成绩统计,会被一些常见问题难住。碰到的难题主要有:如何统计不同分数段人数、如何在保持学号不变前提下进行排名、如何将百分制转换成不同分数段与如何用红色显示不及格的分数等,本文着重对这些问题的解决方法与技巧加以分析和讨论。
本文假设读者已对Excel的基本操作已经有一定基础,已经掌握如何进行求和、求平均和如何使用自动填充柄进行复制公式等操作,本文对这些一般性操作不做详细介绍,仅对一些难度较大的操作技巧进行讨论。
二、Excel统计学生成绩时的四个难题
假设在统计学生成绩时,我们需要统计出如图1所示的相关结果。

图1 学生成绩统计所需要的结果图
这里,假设学号、姓名、成绩等列及行15都已经事先输好,需要让Excel统计其他的相关数据结果。这时,成绩统计中主要难解决的问题及它们在图中的位置如下:
问题1:如何统计不同分数段的学生人数?(图中A16~E16)
问题2:如何在保持学号顺序不变的前提下进行学生成绩名次排定?(图中F2~F13)
问题3:如何将百分制转换成不同的等级分?(图中“等级1”与“等级2”列)
问题4:如何使不及格的分数以红色显示?(图中红色显示部分,即第12行)

三、解决统计学生成绩时的四个难题的方法
下面,针对上面提出的四个难题分别讨论解决的方法与技巧。
1、统计不同分数段的学生人数
统计不同分数段的学生人数是非常常见的需求,其所需结果如图1中A16~E16所示。这里,假设需要统计90~100、80~89、70~79、60~69及低于60分五个不同分数段的人数。
通常,统计不同分数段最好的方法是利用COUNTIF(X,Y)函数。其中有两个参数,第一个参数X为统计的范围,一般最好用绝对引用;第二个参数Y为统计条件,要加引号。
对于小于60分的人数只要用一个COUNTIF( )函数,如在E16单元格中输入公式:=COUNTIF($C$2:$C$13,"<60")。
对于其他在两个分数之间的分数段的人数统计,需要用两个COUNTIF( )函数相减。如在A16单元格中输入公式:=COUNTIF($C$2:$C$13,"<=100")-COUNTIF($C$2:$C$13,"<90"),即用小于等于100的人数减去小于90的人数。
如果要统计80~89、70~79与60~69分数段的人数,只要利用自动填充柄将该公式复制到右边三个单元格,再把"<=100"与"<90"作相应的修改,就可以得到正确的结果。
2.保持学号顺序不变的前提下进行成绩排名
学生成绩排定在学生成绩统计中经常用到。特别要强调的是,这里所谈的方法不是一般的排序,因为那样会使学生的学号顺序发生变化。这里所需要的是在保持学号顺序不变的情况下进行学生成绩名次排定的功能,其所需结果如图1中F2~F13所示。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-05-24
这么多的问题,不是很简单的,你最好自己慢慢做,有具体问题了再来问,这样问如果别人没有做过是不会回答你的!本回答被网友采纳
相似回答