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