太原財政金融學校 李 潔
學生考試成績管理是每個學校重要的日常管理工作之一。由于學校的參加人數(shù)多,人工管理學生成績,已經(jīng)無法滿足信息化時代的要求。在學生考試后,每個學校都有一套適合自己學情的特色成績分析方法對班級和學科成績進行系統(tǒng)分析。以前采用人工統(tǒng)計方法費時費力,統(tǒng)計一個年級的成績需要3-4天時間,成績的時效性不夠。我有幸參與了某?!秾W校成績系統(tǒng)》的開發(fā)工作。
利用Excel函數(shù)SUM()、AVERAGE()等函數(shù)建立模板的方式,無法滿足大量數(shù)據(jù)的分析,經(jīng)測試,函數(shù)在運行大量數(shù)據(jù)時計算效率低,運行慢,對計算機資源占用嚴重。利用 Excel VBA,參考《EXCEL_VBA 完全手冊》 、《ExcelVBA實戰(zhàn)技巧精粹》等書籍,最后決定利用ExcelVBA中的數(shù)組、字典解決程序運行效率問題。
通過與學校教研室負責人、教研員等溝通,調(diào)研了學校成績分析系統(tǒng)的具體需求,學生成績的計算過程及方法。根據(jù)需求進行如下規(guī)劃與準備,程序編制的過程中設(shè)置如下幾個主要模塊:
安裝Office 2010 利用ExcelVBA 的程序設(shè)計功能完成對Excel表格數(shù)據(jù)的計算。
下圖為主界面,有8張工作表分別為“基礎(chǔ)數(shù)據(jù)”,“考試成績”、“排名”、“均分”、“本次名次”、“名次段”、“對比名次”、“均分名差負值表”,這8張工作表分別放不同的分析數(shù)據(jù)。表格內(nèi)容“班級”、“層次”、“班主任”、“采樣數(shù)”這四列為固定列,后期在數(shù)據(jù)分析中,程序要讀取這些項目,所以這些項目名不能發(fā)生改變,表格的其它列為學科列。界面上有9個工作按鈕,執(zhí)行不同的程序代碼,這9個按鈕為“讀入考試成績”、“計算排名”、“計算采樣均分”、“計算采樣均名次”、“名次段統(tǒng)計”、“讀入對比名次”、“均分名差負值表”、“輸出結(jié)果”、“清除內(nèi)容”,其中“名次段統(tǒng)計”可以對名次段的名次間隔進行設(shè)置。
?
這里我們重點講解年級“均分”表是如何通過ExcelVBA實現(xiàn)的,該校每個班級層次不同對應(yīng)的采樣人數(shù)不同,例如:1401班人數(shù)為52人,采樣數(shù)為48人,那么1401班的語文均分就是語文前48名學生平均分,數(shù)學均分是數(shù)學前48名學生平均分,這樣的計算方法如果用Excel函數(shù)去計算會很繁瑣,很費時間,所以我們利用ExcelVBA的Dictionary(字典)來完成。Dictionary對象有它獨有的方法和屬性,Dictionary對象用于存儲兩個相關(guān)聯(lián)的一維數(shù)組,包括條目和關(guān)鍵字,所以也可以將Dictionary看作是特殊的數(shù)組,由于Dictionary對象的關(guān)鍵字Key具有唯一性,因為可以通過它提取一組數(shù)值的唯一值,而且Dictionary對象可以借助Keys 方法一次性輸出。“均分”工作表中計算的基礎(chǔ)數(shù)據(jù)是依據(jù)“排名”工作表的數(shù)據(jù)得來的。
全年級成績排名表
?
均分模塊代碼如下:
《學校成績分析系統(tǒng)》使用方便,操作簡單,容易上手,可以生成豐富、靈活的統(tǒng)計報表,可以對學生信息、教師信息、成績信息進行維護,可快速準確地提供成績分析結(jié)果,大大增強了學校成績分析的時效性。