如何使用excel打印学生成绩单

边框要显示哦
2024-12-13 22:55:49
推荐回答(2个)
回答1:

创建空成绩单 在介绍制作过程之前先说明一下,为了便于说明问题,这里使用的Excel样例工作表命名为“学生成绩表”,内容在《利用Access制作学生成绩单》的基础上作了些小改动:第1行为项目名称,具体的学生信息从第2行开始,将学号、姓名和各科目的内容改为相应项目名称加编号的形式,如图1所示,这样可以非常直观地看出是否出现差错,实际使用时只需要替换为对应的真实内容即可。 准备好原始数据后,制作每个学生成绩表的工作说到底就是将“学生成绩表”工作表中的每一行内容转换为每行一项的单独表格,具体操作过程这样来进行: 在工作簿中插入一个空白工作表,下面的工作都在这个工作表中进行。这个工作表的表名可自定,并不影响结果,这里就用Excel的命名“Sheet1”吧。第一步先合并A1和B1两个单元格,填入表头,这里要填的是汉字“学生成绩单”,也可根据实际需要变动。然后在A2单元格填入第一项的名称,为了保证通用性和方便性,这里不直接填汉字“学号”,而是填入公式“=OFFSET(学生成绩表!$A$1,0,MOD(ROW(),11)-2)”,让Excel去取“学生成绩表”中A1单元格的内容。解释一下这里用到的三个函数:ROW()返回当前单元格的行号,MOD函数返回两个参数相除后的余数,OFFSET函数的作用是以指定的引用为参照系,通过给定的偏移量得到新的引用,此处以“学生成绩表”工作表的A1单元格为固定参照系,所以使用了绝对地址的写法“$A$1”,由于项目名称都是在第1行,所以相对于A1单元格的行偏移都为0,而列偏移需要根据所处位置而定,如图2所示,每个学生的成绩单内容共10行,加上相邻两张表之间的一个空行,共11行,所以使用MOD函数将所在行号对11求余数,再减2是为了补偿因加入表头等原因造成的偏移。 填好A2单元格后再在B2单元格中填入公式“=OFFSET(学生成绩表!$A$1,INT(ROW()/11)+1,MOD(ROW(),11)-2)”。这个公式与A2单元格的很相似,说明一下不同之处:INT函数在多种计算机编程语言中都一样,作用是将数值向下取整为最接近的整数,使用“ROW()/11”的原因在于如前所述每个学生占用11行,这里根据所在行号去取对应的内容,由于第1行的存在,别忘记加1。 复制粘贴学生成绩 剩下的主要工作就是简单的复制、粘贴了,这里使用Excel的“填充柄”较为方便。由于曾遇到一些用户并不了解Excel中神通广大的“填充柄”功能,所以在此介绍一下:“填充柄”就是位于选定区域右下角的小黑方块,当鼠标指向“填充柄”时,鼠标的指针变更为黑十字形,此时按住鼠标左键,拖动鼠标经过需要填充数据的单元格区域,然后释放鼠标左键即可快捷地完成复制,比经典的复制、粘贴操作更方便。如果找不到“填充柄”,请在“工具”菜单中单击“选项”,在“编辑”选项卡中检查“单元格拖放功能”复选框是否被选中,如未选中则单击选中它。 在复制之前先选中A2和B2单元格并使用“格式”工具栏中的“边框”将单元格的框线选好以便连同单元格的框线格式一起复制,然后用填充柄一直拖至第10行,这样A2至B10单元格就填好了。前面公式中多次出现了数字11,第11行是作为空行使用的,不填内容,注意用“填充柄”复制时不要复制到这一行。 现在,单元格A1至B11之间的区域就是第一个学生成绩单的内容,选中这个区域,注意别漏了第11行,再用“填充柄”往下拖动,复制是以每个学生11行为单位进行的,“学生成绩表”中有多少学生就拖多少行,如果拖多了,多出来的成绩单内容是空白,删除即可。 打印成绩单 成绩单做好后下一个问题是打印。为了节约用纸,常要求在一张纸上并排打印多列内容然后裁开。一个偷懒的办法是将上面所得的工作表有效内容选中,复制,在Word中粘贴,通过Word“格式”菜单的“分栏”功能设置所需要的栏数,再调整好页边距等数值以保证成绩单的内容不被断开,就可以实现一页纸上打印多列内容了。这个办法的缺点是使用两种软件有点儿繁琐,而且Word的分栏打印是先纵向后横向的,不太符合我们的习惯,故暂且不推荐采用。 还是用Excel来解决吧。理解了上面的公式,无非就是做些改动罢了。以图3所示每张纸打印4列成绩单为例。由于无论每张纸打印多少列成绩单,项目名称总是在“学生成绩表”的第一行不变,所以A1单元格的公式不变。注意B2单元格的公式发生了变化,新的公式为“=OFFSET(学生成绩表!$A$1,INT(ROW()/11)*4+INT(COLUMN()/3)+1,MOD(ROW(),11)-2)”,多出了“INT(COLUMN()/3)”部分,其中COLUMN()函数与ROW()函数相对,返回当前单元格的列号。除以3是因为成绩单有2列,加上中间的一个空列,就是3了。乘以4是与每张纸打印4列成绩单对应的,如要打印8列成绩单,则应改为乘以8,以此类推。整行或整列复制时Excel在行首或列首显示“填充柄”。每张纸打印4列成绩单需将A至C列的内容复制到L列,方法就是选中A至C列后用“填充柄”向右拖。完成整个复制工作时在复制顺序上向下和向右两个方向并没有先后,只要足量复制别遗漏即可。 现在,已经得到了图3那样的成绩单了。调整一下页边距等打印参数就可以进行打印了。 公式编写是关键 本文介绍的方法关键点在于公式的编写,理解公式后可改动公式以适应需求变化。A2单元格的公式始终是“=OFFSET(学生成绩表!$A$1,0,MOD(ROW(),11)-2)”,来看看B2单元格中的公式:每张纸打印1列成绩单时的公式(以下简称为“公式1”)为“=OFFSET(学生成绩表!$A$1,INT(ROW()/11)+1,MOD(ROW(),11)-2)”,每张纸打印4列成绩单时的公式(以下简称为“公式2”)为“=OFFSET(学生成绩表!$A$1,INT(ROW()/11)*4+INT(COLUMN()/3)+1,MOD(ROW(),11)-2)”,成绩单列数为其他数时相应修改公式中的“4”即可。可以看出公式1是公式2的特例。 能够实现引用功能的Excel函数除了OFFSET之外还有INDEX和INDIRECT,如公式2可以改为“=INDEX(学生成绩表!$1:$65536,INT(ROW()/11)*4+INT(COLUMN()/3)+2,MOD(ROW(),11)-1)”或“=INDIRECT("学生成绩表!R" && INT(ROW()/11)*4+INT(COLUMN()/3)+2 && "C" && MOD(ROW(),11)-1,FALSE)”,请注意由于OFFSET函数使用的是偏移量而INDEX和INDIRECT函数使用的是指定行、列,因此调整加减的数值相差为1,推荐采用OFFSET函数。 以上方法不管每张纸打印几列成绩单,“学生成绩表”和存有学生成绩单的工作表“Sheet1”两个工作表是保存在同一个Excel工作簿文件中的,便于查找、使用、保存和管理。此方法还有一个好处就是如果需要修改“学生成绩表”工作表的内容,不管其表名、项目名称还是数据,相应的变动会即时在学生成绩单的工作表中自动完成,无需手工在两个工作表之间手工同步修改(当然前述采用INDIRECT函数时更改工作表“学生成绩表”表名的特殊情形除外),这一点是将Excel中的数据导入Word、Access等软件的方法所不可比拟的。 因此,将前一学期已做好的Excel文件复制打开后只需要在“学生成绩表”工作表中填入本学期的数据就可以打印出学生成绩单了。

回答2:

格式-单元格-边框!