2024年1月15日发(作者:)

使用Office Word和Excel打印成绩通知单和成绩条

每到期末,班主任或者辅导员就要开始收集学生的各科成绩,统计总分,计算名次等。然后就要开始打印每个学生的成绩通知单,装入信封,寄给家长。最原始的做法当然是找两个动作麻利的班干部,在打印好的表格里填上成绩,再装入信封。这样,直到把全班几十个同学的成绩通知单都处理好时,已经是腰酸背痛,手腕麻木了。——既然有 microsoft office

为什么还要这样折磨人呢?

成绩通知通常有两种形式,一种是“成绩通知单”的形式,即每页纸一个成绩,还附加一些关于本学期和下学期的信息,如报名时间、费用等,如图1所示:

成绩通知的另一种形式是“成绩通知条”,即仅仅在一张小纸条上,填写了学生成绩,如图2所示:

下面,我们就开始一步步制作成绩通知单(条)。首先来看看必需的数据,即成绩。它存放在一个名为“成绩.xls”的 excel 文档的“成绩”工作表中,如图3所示:

制作成绩通知单

根据任务的特点,不难想到使用 word 的“邮件合并”。

邮件合并功能需要两个文档,即数据源和模板文档。数据源通常可以是word表格、excel

表格以及数据库表格等,这里就用我们上面提到的那个存放数据的 excel 作为数据源。模

板文档当然需要在 word 里新建了。现在我们来一步一步的准备成绩通知单吧(注:本文以 office 2003 为例,其余版本的 office 中操作类似,可能略有不同):

第一步,新建一个 word 文档,打开“邮件合并”工具栏(右键单击 word 工具栏,在弹出菜单中选择“邮件合并”)。点击工具栏最左边的型,即在弹出的对话框中选择“信函”。

第二步,在“邮件合并”工具栏上点击(打开数据源)按钮,选择我们准备好的“成(设置文档类型)按钮设置主文档类绩.xls”为作数据源。在这一步中请注意,如果“成绩.xls”中有多个工作表,请选择正确的工作表作为数据源。在 word 2000 中,没有提供对工作表的选择对话框,那么请把数据表移到 excel 文档中的第一个工作表位置。

第三步,撰写模板文档内容(可插入表格),并在适当的位置插入正确的“域”。比如,先写好“学号:总分:排名:”,再将光标移动到“学号:”之后,单击“邮件合并”工具栏上的(插入域)按钮,打开如图4所示的“插入合并域”对话框。注意对话框中已经根据数据源列出了所有的域名,即图3所示 excel 表格中的第一行。这里选择学号。同样,依次将光标移动到“总分:”和“排名:”之后,分别插入相应的“总分”域和“排名”域。完成的模板如图5所示:

插入合并域的时候,如果需要控制格式,可以直接在合并域上进行格式操作,如图5中给“姓名”加下划线。但是一定要注意一点,域是一个整体(如果将文本光标移动到某个域上,整个域的背景都会变成灰色,以便区分),所以,无论做什么操作,都要把域作为一个整体来考虑;更不要手工去修改域的名字,虽然这样做时不会报错,但这样做不仅没有意义的,反而会把事情弄糟。

模板文档完成了,不妨先看看实际效果。单击“邮件合并”工具栏上的(查看合并数据)按钮,此时文档中的域都会替换成数据源中的数据,至于是替换成那一条数据,则是由工具栏上的这组按钮决定的。

(合并到新文档;合并到打印 最后核对无误之后,使用“邮件合并”工具栏上的机)两个按钮中一个来进行合并。这里我们可以选用“合并到新文档”按钮看看合并的结果,如图6所示。最后只需要打印这个文档再分别装入信封即可。

制作成绩通知条

制作成绩通知条完全可以使用和制作成绩通知单相同的办法,即邮件合并。只不过合并类型选择为“目录”,而不是“信函”。但是既然只需要用 excel 就成解决,何必再去麻烦 word

呢。

实现成绩通知条,其难点在于给每一条数据都要加上表头,如果能有空格分隔便于裁切就更好。如果我们新建一个工作表,根据当前的行数引用“成绩”表中不同的行,那问题就能很好的解决了。原理说起来似乎有些复杂,所以请先跟着我做,之后再容我慢慢解释。

在“成绩.xls”中新建一个工作表,命名为“成绩通知”。在“成绩通知”工作表的“a1”单元格中输入如下工式:

=if(mod(row(),3)=1,成绩!a$1,if(mod(row(),3)=2,offset(成绩!a$1,row()/3+1,0),""))

(其中“成绩”是对应工作表名称)

输入公式并回车后,再次选中“a1”单元格式,向右拖动选中符号右下角的小方块进行填充,直到将“成绩”工作表中第一行的数据完全复制过来为止。本例中拖动到“k1”单元格。然后再选中“a1:k1”这些单元格,向下拖动选中符号右下角的小方块进行填充,直到第29行。

最后结果如图7所示。将这个表格打印出来,裁切分装即可。

现在来说说为什么要这样做。

当然首要的是解释那个公式的意思,我们先把公式中的两个if语句标记出来:

=if(mod(row(),3)=1,成绩!a$1,if(mod(row(),3)=2,offset(成绩!a$1,row()/3+1,0),""))

可以看出,第一个if语句(标记为红色)中,“mod(row(),3)=1”是条件。当条件成立时,结果为“成绩!a$1”;条件不成立时,结果由第二个if语句决定。这个if语句的意思是,当前行号(由row()返回)除以3的余数为1的时候,本单元格的内容就是“成绩”表a1的内容;否则,其内容由第二个if语句决定。

第二个if语句(标记为蓝色)中,“mod(row(),3)=2”是条件。条件成立时,结果为“offset(成绩!a$1,row()/3+1,0)”取得的值;条件不成立时,结果为空白。其中“offset(成绩!a$1,row()/3+1,0)”表示,从“成绩”表的a1往下数第row()/3+1行处的单元格的值。这个if语句的意思就是,如果当前行号除以3的余数为2的时候,本单元格的内容是“成绩”表a列1+row()/3+1行处的值;否则,其值为空白(用于产生空行作为分隔)。

所以,整个公式就是根据当前行号计算出来应该引用“成绩”表中表头、对应行数据还是空白。而后之所以要复制29行是因为原来10行数据,每行数据在“成绩通知”表中都是3行,即表头、数据和空白,这样就是10*3=30行,因为最后一条数据的空白可以不要,所以是30-1=29行(原“成绩”工作表中的数据行数乘3减1)。

注意公式中的行号都是使用的绝对引用,因为所有内容的引用位置都是以“成绩”表的第一行为基础进行计算的。

结束语

这样制作成绩通知单(条)是不是自动化多了?而且大大提高了效率,值得推广。同样的原理,公司或者机关里发放的工资对帐单(条),也可以使用这个办法,以减轻工作量,赶快试试吧!

Excel统计学生成绩时的四个难题

一、前言

对于教师而言,经常需要用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,"& lt;=100")-COUNTIF($C$2:$C$13,"<90"),即用小于等于100的人数减去小于90的人数。

如果要统计80~89、70~79与60~69分数段的人数,只要利用自动填充柄将该公式复制到右边三个单元格,再把"<=100"与"<90"作相应的修改,就可以得到正确的结果。

快速完成学生成绩等级评定Excel函数帮忙

Excel函数可以帮助各位老师用字母A、B、C给学生打成绩。我们定的标准是80分以上为A,60分至79分为B,60分以下为C。下面我们看如何实现这一效果。

一、利用公式计算等级:

在Excel中把成绩录入完成,然后在表头行的最后边再添加上一个“等级”列。在F2单元格中输入:

=CONCATENATE(IF(C2>=80,"A",IF(C2>=60,"B","C")),IF(D2>=80,"A",IF(D2>=60,"B","C")),IF(E2>=80,"A",IF(E2>=60,"B","C"))),

然后把鼠标指针指向F2单元格的右下角,等鼠标指针变成黑色十字加号时,按住左键向右拖动到这列单元格的最后放手。(如图1)

也可以在F2单元格中输入:

=IF(C2>=80,"A",IF(C2>=60,"B","C"))&IF(D2>=80,"A",IF(D2>=60,"B","C"))&IF(E2>=80,"A",IF(E2>=60,"B","C")),

然后把鼠标指针指向F2单元格的右下角,等鼠标指针变成黑色十字加号时,按住左键向右拖动到这列单元格的最后放手。 (如图2和图3)

二、函数和公式说明:

上面的公式中我们主要是利用IF条件函数的嵌套。IF函数是根据对指定条件的逻辑判断的真假结果,返回相对应的内容的条件函数。利用此函数逻辑计算出真假值,会返回不同的结果,从而可达到筛选数据的目的。其语法格式是:

IF(logical_test,value_if_true,value_if_false), logical_test:表示计算结果为TRUE或者FALSE的任意值或表达式,该参数可使用任何比较运算符;value_if_true:表示 logical_test为TRUE(也就是真或正确)时返回的值;value_if_false:表示logical_test为FALSE(也就是假或错误)时返回的值。

而本例中的公式IF(C2>=80,"A",IF(C2>=60,"B","C"))意思是如果C2单元格中的语文分数大于或等于 80分,则在F2单元格中显示字母A,而如果小于80分则再重新判断是否大于等于60分,如果大于或等于60分则在F2单元格中显示字母B,而如果小于 60分则显示字母C。

CONCATENATE是将若干个文字项合并至一个文字项中的函数。其语法格式是:CONCATENATE(text1,text2„„)。而&是将多个单元格字符串连接成一个字符串的函数。其语法格式是:numb1&numb2&„„。这里text1和numb1是指IF(C2>=80,"A",IF(C2>=60,"B","C")),即语文这列成绩的等级;text2和numb2是指IF(D2&

gt;=80,"A",IF(D2>=60,"B","C")),即数学这列成绩的等级;text3和numb3是指IF(E2&

gt;=80,"A",IF(E2>=60,"B","C")),即英语这列成绩的等级。