每學(xué)期結(jié)束時(shí),老師需要給每個(gè)學(xué)生的家長(zhǎng)發(fā)一份通知,包括學(xué)生的成績(jī)和評(píng)語(yǔ)。以前我們都是手工填寫(xiě)或者打印,要繁瑣的對(duì)學(xué)生的成績(jī)進(jìn)行排名和錄入。其實(shí)利用Excel的一些功能和作用,可以對(duì)學(xué)生的成績(jī)進(jìn)行排名,實(shí)現(xiàn)批量打印通知書(shū)。這里就以某校期末通知書(shū)的打印為例,介紹一下具體的實(shí)現(xiàn)方法。
整理成績(jī)以及評(píng)語(yǔ)表
通常一份標(biāo)準(zhǔn)的家長(zhǎng)通知書(shū),一般都需要包括學(xué)生成績(jī)以及老師的評(píng)語(yǔ),因此在打印通知書(shū)之前,必須將這些資料整理好,啟動(dòng)Excel2007,新建一個(gè)工作薄,將其予以命名,比如“2009年度通知書(shū)打印”,在其中新建一個(gè)工作表,將其命名為“學(xué)生成績(jī)明細(xì)”,在此表中將各個(gè)學(xué)生的成績(jī)復(fù)制過(guò)來(lái),由于還需要對(duì)學(xué)生成績(jī)進(jìn)行合計(jì)、排名,因此在“總分”下面的I2單元格中輸入求總分公式“=SUM(B2:H2)”,在“排名”下面的J2單元格中輸入公式 “=”第”&RANK(I2,$I$2:$I$71)&”名””,然后將這兩個(gè)公式復(fù)制對(duì)應(yīng)的下面單元格區(qū)域中,就可以求出所有學(xué)生的總分以及在本班級(jí)中的排名了(圖1)。
圖1
此外由于通知書(shū)中還需要添加老師的評(píng)語(yǔ),因此新建一個(gè)工作表,將其命名為“老師評(píng)語(yǔ)”,然后在此表的A列中將學(xué)生成績(jī)明細(xì)中的學(xué)生名單復(fù)制過(guò)來(lái),然后在B列中輸入老師對(duì)每個(gè)學(xué)生的評(píng)語(yǔ)(圖2)。
圖2
設(shè)計(jì)通知書(shū)打印模板
雖然每個(gè)學(xué)校的家長(zhǎng)通知書(shū)格式可能不盡完全相同,但是大體上是差不多的,新建一個(gè)工作表,將其命名為“批量打印通知書(shū)”,然后在此表的A2:K24單元格區(qū)域中,根據(jù)自己學(xué)校的要求,輸入家長(zhǎng)通知書(shū)的必要內(nèi)容,如標(biāo)題、開(kāi)頭語(yǔ)、成績(jī)表格、評(píng)語(yǔ)表格以及家長(zhǎng)填寫(xiě)意見(jiàn)的位置(圖3)。
圖3
由于要實(shí)現(xiàn)批量打印,必須在此通知書(shū)模板中添加一個(gè)通知書(shū)序號(hào)選擇單元格,這樣就能夠通過(guò)這個(gè)單元格中的不同序號(hào),從而能夠顯示不同的家長(zhǎng)通知書(shū),在 L3單元格中輸入“請(qǐng)輸入序號(hào)”,然后確定M3單元格為通知書(shū)序號(hào)選項(xiàng)單元格。同時(shí)為了將前面學(xué)生成績(jī)明細(xì)中每個(gè)學(xué)生的數(shù)據(jù)自動(dòng)引用過(guò)來(lái),在通知書(shū)中學(xué)生成績(jī)明細(xì)表“學(xué)生姓名”下面的A12中輸入公式“=OFFSET(學(xué)生成績(jī)明細(xì)!$A$2,$M$3*1-1,0)&”””,在第1門(mén)課“語(yǔ)文” 下面的B12中輸入公式“=VLOOKUP($A$12,學(xué)生成績(jī)明細(xì)!$A$2:$K$60,2,0)”,在第2門(mén)課“數(shù)學(xué)”下面的B12中輸入公式 “=VLOOKUP($A$12,學(xué)生成績(jī)明細(xì)!$A$2:$K$60,3,0)”,并依次類(lèi)推,然后在存放老師評(píng)語(yǔ)的A14中輸入公式 “=VLOOKUP($A$12,老師評(píng)語(yǔ)!$A$2:$B$71,2,0)”。這樣當(dāng)在M3單元格中輸入1時(shí),就會(huì)在通知書(shū)模板中顯示第1個(gè)學(xué)生的家長(zhǎng)通知書(shū),而2時(shí),則顯示第2個(gè)學(xué)生的家長(zhǎng)通知書(shū)。
需要注意的是,此處使用了OFFSET、VLOOKUP等函數(shù),其作用為根據(jù)M3單元格中的數(shù)值,而自動(dòng)引用學(xué)生成績(jī)明細(xì)對(duì)應(yīng)的學(xué)生姓名,而且在成績(jī)表以及評(píng)語(yǔ)中自動(dòng)引用相應(yīng)學(xué)生的成績(jī)以及評(píng)語(yǔ)資料,而公式“OFFSET(學(xué)生成績(jī)明細(xì)!$A$2,$M$3*1-1,0)&”””中的$M$3*1則是針對(duì)不同數(shù)據(jù)之間相隔行數(shù)而定的,如果相隔2行,則將其修改為$M$3*2即可。
利用控件,高效率批量打印通知書(shū)
在前面通知書(shū)模板設(shè)計(jì)的基礎(chǔ)上,就可以利用控件進(jìn)行批量打印通知書(shū)的工作了,在N2、N3中分別輸入開(kāi)始序號(hào)、結(jié)束序號(hào),以其后面的O2、O3單元格作為批量打印通知書(shū)的起始序號(hào),接著單擊“開(kāi)發(fā)工具”菜單,單擊“控件”功能區(qū)中的“插入”選項(xiàng),在彈出的控件列表中,選擇“ActiveX控件”中的命令按鈕,將其拖動(dòng)到M3單元格的下面。
接著右擊此按鈕控件,在彈出的右鍵快捷菜單中,選擇“屬性”命令,在隨之彈出的“屬性”對(duì)話(huà)框中,將此按鈕控件的“Caption”屬性,即按鈕標(biāo)題修改為“批量打印通知書(shū)”。然后還是右擊此按鈕控件,選擇“查看代碼”命令,在彈出的VBA編輯窗口中輸入以下批量打印命令:
Private Sub CommandButton1_Click()
For i = Range(“o2”) To Range(“o3”)
Range(“m3”) = i
ActiveSheet.PrintOut
Next
End Sub
輸入完畢后,關(guān)閉此VBA編輯框,單擊“控件”功能區(qū)中的“設(shè)計(jì)模式”選項(xiàng),以退出設(shè)計(jì)模式,然后選擇下通知書(shū)的打印區(qū)域,最后在O2、O3單元格中輸入需要批量打印家長(zhǎng)通知書(shū)的起始序號(hào),如1~50,最后單擊“批量打印通知書(shū)”按鈕,就可以立即打印出所需要的所需要的50名學(xué)生通知書(shū)了。
以上的批量打印是僅僅針對(duì)通知書(shū)打印而言的,實(shí)際上利用以上方法,稍微修改下,還可以應(yīng)用其他一些批量打印工作領(lǐng)域中,如打印標(biāo)簽、付款通知單、成績(jī)單等等,通過(guò)這個(gè)方法能夠大大提高工作效率,減少出現(xiàn)工作誤差的機(jī)率。