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