陳 偉
(宿州職業(yè)技術(shù)學(xué)院 安徽·宿州 234101)
Excel VBA 在高校自主招生錄取工作中的應(yīng)用研究
陳 偉
(宿州職業(yè)技術(shù)學(xué)院 安徽·宿州 234101)
錄取工作是高校自主招生工作中的重要環(huán)節(jié)。如何保證錄取過程操作規(guī)范并且數(shù)據(jù)準(zhǔn)確合理至關(guān)重要。利用Excel中的VBA可以開發(fā)功能強大的自動化程序,在Excel基礎(chǔ)上把VBA應(yīng)用于高校自主招生錄取工作中,可以簡化錄取流程,提高工作效率,保證錄取數(shù)據(jù)真實有效,為高校自主招生錄取工作提供了新的途徑。
Excel;VBA;高職院校;錄取系統(tǒng)
2003年以來,教育部推行自主招生,結(jié)束了此前高校只能在每年同一時間招考的歷史,已逐漸成為高校尤其是高職院校選拔錄取工作的重要環(huán)節(jié)。自主招生的選拔考核方式每個省份或高校不盡相同,以安徽省高職院校自主招生為例,考核方式為:全省統(tǒng)一文化素質(zhì)考試+職業(yè)適應(yīng)測試(專業(yè)技能測試)??忌某煽冇蓛刹糠纸M成,即:總成績=文化素質(zhì)考試成績+院校專業(yè)技能測試成績。普通高考錄取通過全國統(tǒng)一的專用錄取平臺完成,而自主招生的錄取則由各院校自己承擔(dān),如果各自主招生院校沒有自己的專門錄取平臺,就會給錄取工作帶來極大的不便。
Excel中包含了大量的實用函數(shù),在數(shù)據(jù)處理方面表現(xiàn)非常優(yōu)秀,宏語言VBA能夠有效提升Excel的可用性和自動化功能,可大大提高管理工作的效率和數(shù)據(jù)處理的準(zhǔn)確性。Excel VBA充分應(yīng)用到高校自主招生錄取工作中,可以簡化錄取工作流程,保證錄取數(shù)據(jù)的合理性和準(zhǔn)確性。
VBA一種宏語言,全名為Visual Basic for Applications,是微軟在其用于桌面程序,特別是Microsoft Office軟件中執(zhí)行自動化任務(wù)而開發(fā)的新一代宏語言。VBA源自Visual Basic(簡稱VB)語言,它的開發(fā)機制與VB相似,沿用了VB的語法體系,同樣也具有VB的集成開發(fā)環(huán)境。在Microsoft Office中,VBA是內(nèi)置嵌入的,主要是用來擴展office應(yīng)用的功能,能夠控制office軟件,與Excel、Word、Access、Power Point、Outlook等完美融合,進行更高層次的功能開發(fā)[1]。通過VBA編程技術(shù),可實現(xiàn)數(shù)據(jù)規(guī)范管理、科學(xué)統(tǒng)計,大大簡化了數(shù)據(jù)處理的流程,提高工作效率。
和傳統(tǒng)的宏語言相比,VBA具有如下特點:
(一)面向?qū)ο?/p>
同VB語言一樣,VBA也可實現(xiàn)面向?qū)ο蟮某绦蛟O(shè)計,通過構(gòu)建標(biāo)準(zhǔn)模塊、類模塊,編寫相應(yīng)的功能代碼來實現(xiàn)所需的功能。
(二)發(fā)行方便
VBA是嵌入到Office軟件中的,為Office中各軟件所共享。VBA程序不需要單獨的打包發(fā)行,只需要發(fā)行包含其代碼的Office文檔即可。
(三)使用簡便,功能強大
Office辦公軟件對于廣大的計算機使用者來說都比較熟悉,VBA程序在這里是輔助和擴充,大部分的功能是在Office中完成,簡化了程序設(shè)計。VBA可以直接應(yīng)用Office軟件的各項強大功能,所以對于程序設(shè)計人員的程序設(shè)計和開發(fā)更加方便快捷。
高職院校自主招生考試填報志愿時,每個考生可以填報多個院校,且每個院??商顖蠖鄠€專業(yè)。由于高職自主招生的錄取工作主要是由院校方獨立承擔(dān),不需要考慮考生所填報的多個院校的平行志愿,只需關(guān)注考生報考院校的多個專業(yè)志愿即可,按照各專業(yè)招生計劃進行錄取。
(一)錄取規(guī)則及流程
目前,安徽省內(nèi)高職院校自主招生大多專業(yè)均文理兼招,不分文理,統(tǒng)一錄取。錄取遵循“分數(shù)優(yōu)先,遵循志愿”原則,即根據(jù)考生的第一專業(yè)志愿,按照考生總成績從高分到低分依次錄取,對照招生計劃,若有空余名額,就錄取,若第一專業(yè)志愿無法滿足,則根據(jù)第二專業(yè)志愿從高分到低分依次錄取,依此類推,進行后續(xù)專業(yè)志愿錄取。當(dāng)考生所填報的專業(yè)志愿均無法滿足時,若填報專業(yè)服從志愿,則由學(xué)校調(diào)劑到有空余計劃的專業(yè),若未填報專業(yè)服從志愿,則作退檔處理。錄取時,若成績相同,則按照院校測試成績從高分到低分依次錄取。操作辦法是把考生分數(shù)進行從高到低縱向排序,對應(yīng)的考生志愿進行橫向逐個檢索,從最高分學(xué)生開始,依據(jù)志愿1,對照招生計劃,若有空余名額,就錄取,否則,看第2志愿,依次類推,直到被錄取或被退檔。從考生角度來看,詳細的錄取流程如圖1。
圖1 錄取流程圖
(二)錄取系統(tǒng)設(shè)計
1.Excel電子表格設(shè)計
在按照上述錄取辦法設(shè)計Excel電子表格。本系統(tǒng)中電子表格包括兩個工作表,即錄取表和招生計劃表。錄取表中是考生的志愿信息,是把考生成績降序排列,對應(yīng)的考生志愿橫向排列,設(shè)計好的表格如圖2所示。招生計劃表中包含院校自主招生投放的專業(yè)、計劃數(shù)及實際錄取人數(shù),表格如圖3。
圖2 錄取表
招生計劃表中使用Excel中COUNTIFS函數(shù)實現(xiàn)跨表計算,計算出每個專業(yè)實招人數(shù)。COUNTIFS函數(shù)的用途是計數(shù),統(tǒng)計出多個區(qū)域中滿足給定條件的單元格的個數(shù),在計劃表中C2單元格寫入公式=COUNTIFS(錄取!$M$2:$M$3477,招生計劃!A2),A2為專業(yè)1所在的單元格,$M$2:$M$3477表示錄取表中錄取專業(yè)一列,從行2到行3476,即待錄取學(xué)生有3476人。通過COUNTIFS函數(shù)在$M$2:$M$3477區(qū)域查找與A2單元格內(nèi)容相同的單元格個數(shù)即為專業(yè)1的實際錄取人數(shù),其他專業(yè)按照公式填充或直接拖放填充即可。
圖3 招生計劃表
2.錄取功能實現(xiàn)
盡管Excel中內(nèi)置了大量的實用函數(shù),但是實際應(yīng)用中很多需求是Excel的函數(shù)無法滿足的,就像本文中錄取專業(yè)的生成需要考慮專業(yè)計劃、志愿順序、是否調(diào)劑等因素,單純的Excel函數(shù)無法實現(xiàn)類似的功能,這就必須借助VBA程序來完成。實現(xiàn)方法如下:
在Excel 2010中,在工具欄上擊右鍵,選擇自定義功能區(qū),把Visual Basic編輯器添加至工具欄,點擊Visual Basic編輯器或按ALT+F11,打開Visual Basic編輯器,如同4所示。
圖4 VisualBasic編輯器
在Visual Basic編輯器中,插入模塊1,在模塊1中定義錄取函數(shù)luqu(),并在錄取表中插入按鈕,按鈕文本顯示為“開始錄取”,為按鈕指定宏,宏名即為模塊1中的錄取函數(shù)luqu (),點擊“開始錄取”按鈕,直接調(diào)用錄取函數(shù)填充錄取專業(yè)一列實現(xiàn)錄取功能。
VBA程序編寫時按照上文錄取流程進行,遵循分數(shù)優(yōu)先的原則,編寫思路如下:
①按排名項降序排列,排出最高分;
②創(chuàng)建兩個字典對象,分別記錄每個專業(yè)正在錄取的人數(shù)錄和錄取上限人數(shù);
③根據(jù)排名優(yōu)先,先降序排列,然后按照志愿向下錄取,只要報了該專業(yè)的就優(yōu)先錄取,這里要判斷考生是否填報專業(yè)且是否已被錄取,如果已經(jīng)被錄取則后面專業(yè)不必再進行檢索,否則繼續(xù)檢索下面的專業(yè)進行錄??;
④如果所有專業(yè)都沒有被錄取,查看考生是否專業(yè)服從調(diào)劑,服從則錄取到未錄滿專業(yè)否則退檔;
⑤添加計時器,計算錄取所需時間。
VBA程序中錄取函數(shù)利用條件控制語句和循環(huán)控制語句來實現(xiàn),共編寫程序代碼47行程具體代碼如圖5所示。
圖5 程序代碼截圖
下面我們對該段代碼的具體含義做個簡單的介紹。
第2行和47行是VBA中定義函數(shù)過程的開始和結(jié)尾標(biāo)記,luqu()是錄取函數(shù)名,可自定義修改。
第8行代碼Range("a1").CurrentRegion.Sort key1:=Range ("l1"),Header:=xlYes,order1:=xlAscending是整個錄取流程的前提,是按照L列的考生排名作為排序關(guān)鍵字進行升序排列,即按照成績降序,遵循分數(shù)優(yōu)先原則。
第 9行 至 第 12行 ,luqusheet=[b1].CurrentRegion,jihuasheet=Sheets("招生計劃").[a1].CurrentRegion,使用luqusheet jihuasheet分別獲取錄取表和招生計劃表的數(shù)據(jù);創(chuàng)建字典對象dic1和dic2,dic1用來記錄每個專業(yè)正在錄取人數(shù),dic2用來記錄每個專業(yè)的招生計劃數(shù)即錄取上限人數(shù),實現(xiàn)代碼為第13行至第16行。
第17行至第36行,通過循環(huán)嵌套實現(xiàn)錄取,F(xiàn)or i=2 To UBound(luqusheet),外循環(huán)循環(huán)次數(shù)3476次,即從錄取表第2行到3477行的考生,按照所填報的志愿向下錄取通過內(nèi)循環(huán)來檢索填報的4個志愿是否滿足錄取條件,內(nèi)循環(huán)For j= 3 To 7是專業(yè)錄取志愿1-4到5結(jié)束內(nèi)循環(huán),在內(nèi)循環(huán)中進行判斷考生的志愿是否填寫專業(yè),如果填報志愿且未被錄取則按志愿進行錄取,如果已被錄取則后面的專業(yè)不必再進行檢索判斷,通過Exit For退出內(nèi)循環(huán),回到外循環(huán)繼續(xù)進行下個考生的錄取,依次類推直到所有考生錄取結(jié)束退出外循環(huán)。
在錄取過程中如果考生的所有志愿都沒有被錄取,則判斷考生是否專業(yè)服從調(diào)劑,如果服從則在未錄滿的專業(yè)內(nèi)進行錄取,不服從則退檔,代碼見行25至33。
最后通過第40行代碼把錄取表重新填充數(shù)據(jù)包括錄取專業(yè)列,最終實現(xiàn)錄取功能。
第45行代碼計算錄取過程所用時間,通過Timer-t實現(xiàn)。
Excel具有強大的數(shù)據(jù)處理功能,掌握VBA程序設(shè)計,可以對Excel的功能進行擴展性的二次開發(fā),更好地發(fā)揮Excel的數(shù)據(jù)處理自動程序化,彌補了Excel內(nèi)置函數(shù)應(yīng)用靈活性上的不足。本文中在Excel自身功能的基礎(chǔ)上結(jié)合VBA編程,設(shè)計了自定義的錄取函數(shù),可順利地實現(xiàn)高校自主招生的考生錄取工作。本設(shè)計簡化了錄取流程,提高了自主招生考生錄取工作的規(guī)范性、準(zhǔn)確性和便捷性,可為高校自主招生錄取工作提供較大的幫助。
[1]顏杰群,林麗蓉.基于ExcelVBA的高校學(xué)生管理系統(tǒng)開發(fā)[J].寧波教育學(xué)院學(xué)報,2015,04:83-87.
[2]劉坤彪,陳姝.基于Access VBA的中小型數(shù)據(jù)庫應(yīng)用開發(fā)[J].南陽理工學(xué)院學(xué)報,2013,06:48-56.
[3]劉太甫,戶曉艷.基于VBA的高校學(xué)生管理測評卡的設(shè)計與實現(xiàn)[J].黃岡職業(yè)技術(shù)學(xué)院學(xué)報,2012,06:100-102.
[4]高世萍,翟濱,廉鎖原.基于Excel函數(shù)及ExcelVBA的成績分析[J].電腦學(xué)習(xí),2011,01:18-19.
[5]徐志偉,孫航.VBA讀取Excel工作表數(shù)據(jù)方法探索[J].湖北廣播電視大學(xué)學(xué)報,2011,06:159-160.
[6]沈玉寶.基于ExcelVBA實現(xiàn)學(xué)生成績檔案管理自動化[J].陰山學(xué)刊(自然科學(xué)),2012,02:45-48.
責(zé)任編輯:徐向陽
審 稿 人:程家超
TP399
A
1009-8534(2017)03-0102-02
安徽省高校自然科學(xué)研究重點項目“基于云平臺的職業(yè)教育資源管理研究”(KJ2016A778);安徽省高校優(yōu)秀青年人才支持計劃重點項目(gxyqZD2016586);安徽省質(zhì)量工程項目“基于Blackboard的高職程序設(shè)計類課程翻轉(zhuǎn)課堂教學(xué)模式研究——以ASP.NET課程為例”(2016jyxm1039)
陳偉,宿州職業(yè)技術(shù)學(xué)院講師,碩士,研究方向:計算機網(wǎng)絡(luò)。