資源描述:
《基于excel vba的多考場(chǎng)電子成績(jī)自動(dòng)統(tǒng)計(jì)》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、基于ExcelVBA的多考場(chǎng)電子成績(jī)自動(dòng)統(tǒng)計(jì) 摘要:隨著計(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ò)。為此,利用ExcelVBA方便、靈活、功能強(qiáng)大等特點(diǎn)實(shí)現(xiàn)多張表格成績(jī)的自動(dòng)整合與統(tǒng)計(jì),簡(jiǎn)化了教師的工作,提高了效率?! £P(guān)鍵詞:ExcelVBA;電子成績(jī);自動(dòng)統(tǒng)計(jì) 中圖分類(lèi)號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-
2、3044(2016)15-0218-02 1引言5 在高校日常教學(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ì)
3、生成一份本次考試的電子成績(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ò)?! 榱私鉀Q上述問(wèn)題,將教師從繁重的手工勞動(dòng)中解放出來(lái),可采用Excel作為系統(tǒng)編寫(xiě)工具,Excel自帶的系統(tǒng)開(kāi)發(fā)工具VBA(VisualBasicforApplicatio)方便、靈活、功能強(qiáng)大等特點(diǎn),可以直接對(duì)Excel對(duì)象進(jìn)行編程[3],實(shí)現(xiàn)多張電子表格成績(jī)的自動(dòng)整合,大大簡(jiǎn)化了教師的工作,提高了其工
4、作效率?! ?電子成績(jī)?cè)紨?shù)據(jù)收集 2.1原始數(shù)據(jù)收集 由于各高校采用無(wú)紙化考核的工具不同,因此每一次考試產(chǎn)生的電子成績(jī)的文件類(lèi)型也可能不同,可能是.txt,.xls/x或.doc/x等不同類(lèi)型的文件。本文編寫(xiě)的程序只針對(duì).xlsx格式的文件,若考試成績(jī)的文件類(lèi)型非.xlsx格式,需要將成績(jī)數(shù)據(jù)保存在.xlsx格式的文件中?! ?.2數(shù)據(jù)預(yù)處理 新建Excel工作表,將文件類(lèi)型改為xlsb格式的文件,取名為“整合各表工具”。將各考場(chǎng)的excel成績(jī)表以及xlsb文件放到同一路徑下,xlsb格式的文件中會(huì)呈現(xiàn)具體的代碼?! ?各
5、考場(chǎng)成績(jī)的統(tǒng)計(jì) 3.1用VBA代碼實(shí)現(xiàn)各表的整合 打開(kāi).xlsb格式的文件,按快捷鍵Alt+F11打開(kāi)編寫(xiě)代碼的環(huán)境,插入模塊,在模塊中編寫(xiě)代碼,具體代碼如下: Sub整合各表()5 thispath=ThisWorkbook.Path'指當(dāng)前工作薄的路徑 DimSAKfileAsString’定義程序執(zhí)行時(shí)讀取當(dāng)前表的文件名 SAKfile=Dir(thispath&"\*.xlsx")’文件名獲取的方式是當(dāng)前路徑下.xlsx格式的文件名 DoWhileSAKfile""’判斷文件名不為空的時(shí)候執(zhí)行循環(huán) IfSAK
6、fileThisWorkbook.NameThen DimmAsLong SetSAK=Workbooks.Open(thispath&"\"&SAKfile)’順次打開(kāi)當(dāng)前路徑下.xlsx格式的文件 SetSAKsheet=SAK.Worksheets(1) m=SAKsheet.Range("A1048576").End(xlUp).Row’該變量為打開(kāi)的表中最后一行的行數(shù) SBKtemp=ThisWorkbook.Worksheets(1).Range("A1048576").End(xlUp).Row’該變量為當(dāng)前
7、寫(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表5
8、EndIf SAKfile=Dir Loop EndSub 代碼編寫(xiě)完之后,在代碼窗口按F5執(zhí)行程序,或點(diǎn)擊視圖→宏,執(zhí)行即可?! ?.2統(tǒng)計(jì)各分?jǐn)?shù)段的人數(shù) 根據(jù)上述整合數(shù)據(jù)的結(jié)果,可以使用Frequency()函數(shù)快速統(tǒng)計(jì)