陸嬌嬌
摘要: 隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,高校本科課程考核方式的改革,諸多高校已從傳統(tǒng)的紙質(zhì)試卷考核轉(zhuǎn)為無(wú)紙化考核,減少了教師工作量,極大地提高了教師的工作效率。然而,若要對(duì)一門(mén)課程多考場(chǎng)的許多Excel表格中的成績(jī)進(jìn)行相關(guān)統(tǒng)計(jì),全靠人工手動(dòng)計(jì)算不僅耗時(shí)耗力,而且還容易出錯(cuò)。為此,利用Excel VBA方便、靈活、功能強(qiáng)大等特點(diǎn)實(shí)現(xiàn)多張表格成績(jī)的自動(dòng)整合與統(tǒng)計(jì),簡(jiǎn)化了教師的工作,提高了效率。
關(guān)鍵詞:Excel VBA;電子成績(jī);自動(dòng)統(tǒng)計(jì)
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)15-0218-02
1 引言
在高校日常教學(xué)中,課程考核占據(jù)十分重要的地位,是教學(xué)中必不可少的環(huán)節(jié),根據(jù)考核可以檢查課程制定的目標(biāo)是否實(shí)現(xiàn)了教育目的,可以準(zhǔn)確地判斷出學(xué)生掌握課程的程度,以方便課程教學(xué)設(shè)計(jì)的有效改進(jìn)[1]。鑒于傳統(tǒng)紙質(zhì)試卷考核的出卷、閱卷、統(tǒng)計(jì)分析成績(jī)工作量大等諸多不足,許多高校采用無(wú)紙化上機(jī)考核方式,全部計(jì)算機(jī)閱卷,減輕了教師的工作[2]。然而,對(duì)于像大學(xué)計(jì)算機(jī)這種全校性質(zhì)的公共課程的考核,因?yàn)槿藬?shù)較多,機(jī)房有限,機(jī)器數(shù)量有限,往往組織一場(chǎng)考試是不夠的,需要組織多場(chǎng)考試,而每一場(chǎng)考試后都會(huì)生成一份本次考試的電子成績(jī)。若想了解所有考生本次考試的情況,并對(duì)所有學(xué)生的各分?jǐn)?shù)段的人數(shù)進(jìn)行統(tǒng)計(jì)分析,需要將各個(gè)考場(chǎng)的數(shù)據(jù)進(jìn)行整合。如果Excel表格的數(shù)量不多,人工統(tǒng)計(jì)無(wú)妨;如果數(shù)量較多,完全手工統(tǒng)計(jì),不僅耗時(shí)耗力,而且易出錯(cuò)。
為了解決上述問(wèn)題,將教師從繁重的手工勞動(dòng)中解放出來(lái),可采用Excel作為系統(tǒng)編寫(xiě)工具,Excel 自帶的系統(tǒng)開(kāi)發(fā)工具VBA(Visual Basic for Applicatio)方便、靈活、功能強(qiáng)大等特點(diǎn),可以直接對(duì)Excel對(duì)象進(jìn)行編程[3],實(shí)現(xiàn)多張電子表格成績(jī)的自動(dòng)整合,大大簡(jiǎn)化了教師的工作,提高了其工作效率。
2 電子成績(jī)?cè)紨?shù)據(jù)收集
2.1 原始數(shù)據(jù)收集
由于各高校采用無(wú)紙化考核的工具不同,因此每一次考試產(chǎn)生的電子成績(jī)的文件類型也可能不同,可能是.txt,.xls/x或.doc/x等不同類型的文件。本文編寫(xiě)的程序只針對(duì).xlsx格式的文件,若考試成績(jī)的文件類型非.xlsx格式,需要將成績(jī)數(shù)據(jù)保存在.xlsx格式的文件中。
2.2 數(shù)據(jù)預(yù)處理
新建Excel工作表,將文件類型改為xlsb格式的文件,取名為“整合各表工具”。將各考場(chǎng)的excel成績(jī)表以及xlsb文件放到同一路徑下,xlsb格式的文件中會(huì)呈現(xiàn)具體的代碼。
3 各考場(chǎng)成績(jī)的統(tǒng)計(jì)
3.1 用VBA代碼實(shí)現(xiàn)各表的整合
打開(kāi).xlsb格式的文件,按快捷鍵Alt+F11打開(kāi)編寫(xiě)代碼的環(huán)境,插入模塊,在模塊中編寫(xiě)代碼,具體代碼如下:
Sub 整合各表()
thispath = ThisWorkbook.Path'指當(dāng)前工作薄的路徑
Dim SAKfile As String定義程序執(zhí)行時(shí)讀取當(dāng)前表的文件名
SAKfile = Dir(thispath & "\*.xlsx")文件名獲取的方式是當(dāng)前路徑下.xlsx格式的文件名
Do While SAKfile <> "" 判斷文件名不為空的時(shí)候執(zhí)行循環(huán)
If SAKfile <> ThisWorkbook.Name Then
Dim m As Long
Set SAK = Workbooks.Open(thispath & "\" & SAKfile)順次打開(kāi)當(dāng)前路徑下.xlsx格式的文件
Set SAKsheet = SAK.Worksheets(1)
m = SAKsheet.Range("A1048576").End(xlUp).Row 該變量為打開(kāi)的表中最后一行的行數(shù)
SBKtemp = ThisWorkbook.Worksheets(1).Range("A1048576").End(xlUp).Row 該變量為當(dāng)前寫(xiě)程序的工作薄的第一張工作表中最后一行的行數(shù)
SAKsheet.Range("a2:d" & m).Copy ‘復(fù)制各考場(chǎng)的成績(jī)數(shù)據(jù)
ThisWorkbook.Worksheets(1).Range("a" & (SBKtemp + 1) & ":d" & (SBKtemp + m - 1)).PasteSpecial (xlPasteValues) 粘貼到匯總表中
Application.CutCopyMode = False ‘清空剪貼板中的數(shù)據(jù)
ThisWorkbook.Saved = True ‘保存程序文件
SAK.Close 關(guān)閉打開(kāi)的excel表
End If
SAKfile = Dir
Loop
End Sub
代碼編寫(xiě)完之后,在代碼窗口按F5執(zhí)行程序,或點(diǎn)擊視圖→宏,執(zhí)行即可。
3.2 統(tǒng)計(jì)各分?jǐn)?shù)段的人數(shù)
根據(jù)上述整合數(shù)據(jù)的結(jié)果,可以使用Frequency()函數(shù)快速統(tǒng)計(jì)各分?jǐn)?shù)段的人數(shù)。首先確定各分?jǐn)?shù)段,然后確定間隔值(區(qū)間的上限),最后插入Frequency()函數(shù),選中結(jié)果區(qū)域,在編輯欄處按快捷鍵Ctrl+shift+enter。以某高校入學(xué)考試成績(jī)?yōu)闃颖?,統(tǒng)計(jì)結(jié)果如表1所示。
4 結(jié)束語(yǔ)
本文以無(wú)紙化考核軟件導(dǎo)出的Excel形式的成績(jī)表為例,采用Excel VBA實(shí)現(xiàn)對(duì)各個(gè)考場(chǎng)成績(jī)數(shù)據(jù)的整合,解決了教師手工整合各表的繁瑣問(wèn)題,極大地減輕了教師工作的負(fù)擔(dān),大大提高了教師的工作效率,基本取得了預(yù)期的效果。
該程序雖然極大程度地減輕了教師的工作量,尤其對(duì)多數(shù)據(jù)表的自動(dòng)整合有很好的使用價(jià)值。但是仍有不足的地方需要改進(jìn),如前期數(shù)據(jù)的預(yù)處理能否用程序自動(dòng)實(shí)現(xiàn)文件類型的轉(zhuǎn)換,對(duì)于各分?jǐn)?shù)段人數(shù)的統(tǒng)計(jì),本文采用函數(shù)實(shí)現(xiàn),盡管也很方便,但是否可將該部分用程序?qū)崿F(xiàn),進(jìn)一步簡(jiǎn)化教師的工作,能否做出人性化的界面,這需要開(kāi)發(fā)人員進(jìn)一步研究VBA更深層次的用途。
參考文獻(xiàn):
[1] 張蕓,王繼東.基于Excel和VBA的試卷生成及評(píng)分系統(tǒng)[J].西昌學(xué)院學(xué)報(bào)(自然科學(xué)版), 2014(3):67-70.
[2] 李旭東.基于教務(wù)系統(tǒng)表格及Excel VBA的學(xué)生平時(shí)成績(jī)換算研究與實(shí)現(xiàn)[J].中國(guó)教育信息化·基礎(chǔ)教育,2014(20):81-84.
[3] 錢(qián)建明.EXCEL VBA在考場(chǎng)編排中的設(shè)計(jì)與實(shí)現(xiàn)[J].中國(guó)教育信息化·基礎(chǔ)教育,2014(7):65-69.
[4] 鄭杰,周曉宏.基于VBA的輔助排課系統(tǒng)的實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2014(24):67-70.