Excel VBA 在高校自主招生录取工作中的应用研究
2017-07-05陈伟
陈 伟
(宿州职业技术学院 安徽·宿州 234101)
Excel VBA 在高校自主招生录取工作中的应用研究
陈 伟
(宿州职业技术学院 安徽·宿州 234101)
录取工作是高校自主招生工作中的重要环节。如何保证录取过程操作规范并且数据准确合理至关重要。利用Excel中的VBA可以开发功能强大的自动化程序,在Excel基础上把VBA应用于高校自主招生录取工作中,可以简化录取流程,提高工作效率,保证录取数据真实有效,为高校自主招生录取工作提供了新的途径。
Excel;VBA;高职院校;录取系统
一、前言
2003年以来,教育部推行自主招生,结束了此前高校只能在每年同一时间招考的历史,已逐渐成为高校尤其是高职院校选拔录取工作的重要环节。自主招生的选拔考核方式每个省份或高校不尽相同,以安徽省高职院校自主招生为例,考核方式为:全省统一文化素质考试+职业适应测试(专业技能测试)。考生的成绩由两部分组成,即:总成绩=文化素质考试成绩+院校专业技能测试成绩。普通高考录取通过全国统一的专用录取平台完成,而自主招生的录取则由各院校自己承担,如果各自主招生院校没有自己的专门录取平台,就会给录取工作带来极大的不便。
Excel中包含了大量的实用函数,在数据处理方面表现非常优秀,宏语言VBA能够有效提升Excel的可用性和自动化功能,可大大提高管理工作的效率和数据处理的准确性。Excel VBA充分应用到高校自主招生录取工作中,可以简化录取工作流程,保证录取数据的合理性和准确性。
二、VBA开发工具概述
VBA一种宏语言,全名为Visual Basic for Applications,是微软在其用于桌面程序,特别是Microsoft Office软件中执行自动化任务而开发的新一代宏语言。VBA源自Visual Basic(简称VB)语言,它的开发机制与VB相似,沿用了VB的语法体系,同样也具有VB的集成开发环境。在Microsoft Office中,VBA是内置嵌入的,主要是用来扩展office应用的功能,能够控制office软件,与Excel、Word、Access、Power Point、Outlook等完美融合,进行更高层次的功能开发[1]。通过VBA编程技术,可实现数据规范管理、科学统计,大大简化了数据处理的流程,提高工作效率。
和传统的宏语言相比,VBA具有如下特点:
(一)面向对象
同VB语言一样,VBA也可实现面向对象的程序设计,通过构建标准模块、类模块,编写相应的功能代码来实现所需的功能。
(二)发行方便
VBA是嵌入到Office软件中的,为Office中各软件所共享。VBA程序不需要单独的打包发行,只需要发行包含其代码的Office文档即可。
(三)使用简便,功能强大
Office办公软件对于广大的计算机使用者来说都比较熟悉,VBA程序在这里是辅助和扩充,大部分的功能是在Office中完成,简化了程序设计。VBA可以直接应用Office软件的各项强大功能,所以对于程序设计人员的程序设计和开发更加方便快捷。
三、Excel VBA录取系统设计与实现
高职院校自主招生考试填报志愿时,每个考生可以填报多个院校,且每个院校可填报多个专业。由于高职自主招生的录取工作主要是由院校方独立承担,不需要考虑考生所填报的多个院校的平行志愿,只需关注考生报考院校的多个专业志愿即可,按照各专业招生计划进行录取。
(一)录取规则及流程
目前,安徽省内高职院校自主招生大多专业均文理兼招,不分文理,统一录取。录取遵循“分数优先,遵循志愿”原则,即根据考生的第一专业志愿,按照考生总成绩从高分到低分依次录取,对照招生计划,若有空余名额,就录取,若第一专业志愿无法满足,则根据第二专业志愿从高分到低分依次录取,依此类推,进行后续专业志愿录取。当考生所填报的专业志愿均无法满足时,若填报专业服从志愿,则由学校调剂到有空余计划的专业,若未填报专业服从志愿,则作退档处理。录取时,若成绩相同,则按照院校测试成绩从高分到低分依次录取。操作办法是把考生分数进行从高到低纵向排序,对应的考生志愿进行横向逐个检索,从最高分学生开始,依据志愿1,对照招生计划,若有空余名额,就录取,否则,看第2志愿,依次类推,直到被录取或被退档。从考生角度来看,详细的录取流程如图1。
图1 录取流程图
(二)录取系统设计
1.Excel电子表格设计
在按照上述录取办法设计Excel电子表格。本系统中电子表格包括两个工作表,即录取表和招生计划表。录取表中是考生的志愿信息,是把考生成绩降序排列,对应的考生志愿横向排列,设计好的表格如图2所示。招生计划表中包含院校自主招生投放的专业、计划数及实际录取人数,表格如图3。
图2 录取表
招生计划表中使用Excel中COUNTIFS函数实现跨表计算,计算出每个专业实招人数。COUNTIFS函数的用途是计数,统计出多个区域中满足给定条件的单元格的个数,在计划表中C2单元格写入公式=COUNTIFS(录取!$M$2:$M$3477,招生计划!A2),A2为专业1所在的单元格,$M$2:$M$3477表示录取表中录取专业一列,从行2到行3476,即待录取学生有3476人。通过COUNTIFS函数在$M$2:$M$3477区域查找与A2单元格内容相同的单元格个数即为专业1的实际录取人数,其他专业按照公式填充或直接拖放填充即可。
图3 招生计划表
2.录取功能实现
尽管Excel中内置了大量的实用函数,但是实际应用中很多需求是Excel的函数无法满足的,就像本文中录取专业的生成需要考虑专业计划、志愿顺序、是否调剂等因素,单纯的Excel函数无法实现类似的功能,这就必须借助VBA程序来完成。实现方法如下:
在Excel 2010中,在工具栏上击右键,选择自定义功能区,把Visual Basic编辑器添加至工具栏,点击Visual Basic编辑器或按ALT+F11,打开Visual Basic编辑器,如同4所示。
图4 VisualBasic编辑器
在Visual Basic编辑器中,插入模块1,在模块1中定义录取函数luqu(),并在录取表中插入按钮,按钮文本显示为“开始录取”,为按钮指定宏,宏名即为模块1中的录取函数luqu (),点击“开始录取”按钮,直接调用录取函数填充录取专业一列实现录取功能。
VBA程序编写时按照上文录取流程进行,遵循分数优先的原则,编写思路如下:
①按排名项降序排列,排出最高分;
②创建两个字典对象,分别记录每个专业正在录取的人数录和录取上限人数;
③根据排名优先,先降序排列,然后按照志愿向下录取,只要报了该专业的就优先录取,这里要判断考生是否填报专业且是否已被录取,如果已经被录取则后面专业不必再进行检索,否则继续检索下面的专业进行录取;
④如果所有专业都没有被录取,查看考生是否专业服从调剂,服从则录取到未录满专业否则退档;
⑤添加计时器,计算录取所需时间。
VBA程序中录取函数利用条件控制语句和循环控制语句来实现,共编写程序代码47行程具体代码如图5所示。
图5 程序代码截图
下面我们对该段代码的具体含义做个简单的介绍。
第2行和47行是VBA中定义函数过程的开始和结尾标记,luqu()是录取函数名,可自定义修改。
第8行代码Range("a1").CurrentRegion.Sort key1:=Range ("l1"),Header:=xlYes,order1:=xlAscending是整个录取流程的前提,是按照L列的考生排名作为排序关键字进行升序排列,即按照成绩降序,遵循分数优先原则。
第 9行 至 第 12行 ,luqusheet=[b1].CurrentRegion,jihuasheet=Sheets("招生计划").[a1].CurrentRegion,使用luqusheet jihuasheet分别获取录取表和招生计划表的数据;创建字典对象dic1和dic2,dic1用来记录每个专业正在录取人数,dic2用来记录每个专业的招生计划数即录取上限人数,实现代码为第13行至第16行。
第17行至第36行,通过循环嵌套实现录取,For i=2 To UBound(luqusheet),外循环循环次数3476次,即从录取表第2行到3477行的考生,按照所填报的志愿向下录取通过内循环来检索填报的4个志愿是否满足录取条件,内循环For j= 3 To 7是专业录取志愿1-4到5结束内循环,在内循环中进行判断考生的志愿是否填写专业,如果填报志愿且未被录取则按志愿进行录取,如果已被录取则后面的专业不必再进行检索判断,通过Exit For退出内循环,回到外循环继续进行下个考生的录取,依次类推直到所有考生录取结束退出外循环。
在录取过程中如果考生的所有志愿都没有被录取,则判断考生是否专业服从调剂,如果服从则在未录满的专业内进行录取,不服从则退档,代码见行25至33。
最后通过第40行代码把录取表重新填充数据包括录取专业列,最终实现录取功能。
第45行代码计算录取过程所用时间,通过Timer-t实现。
四、结语
Excel具有强大的数据处理功能,掌握VBA程序设计,可以对Excel的功能进行扩展性的二次开发,更好地发挥Excel的数据处理自动程序化,弥补了Excel内置函数应用灵活性上的不足。本文中在Excel自身功能的基础上结合VBA编程,设计了自定义的录取函数,可顺利地实现高校自主招生的考生录取工作。本设计简化了录取流程,提高了自主招生考生录取工作的规范性、准确性和便捷性,可为高校自主招生录取工作提供较大的帮助。
[1]颜杰群,林丽蓉.基于ExcelVBA的高校学生管理系统开发[J].宁波教育学院学报,2015,04:83-87.
[2]刘坤彪,陈姝.基于Access VBA的中小型数据库应用开发[J].南阳理工学院学报,2013,06:48-56.
[3]刘太甫,户晓艳.基于VBA的高校学生管理测评卡的设计与实现[J].黄冈职业技术学院学报,2012,06:100-102.
[4]高世萍,翟滨,廉锁原.基于Excel函数及ExcelVBA的成绩分析[J].电脑学习,2011,01:18-19.
[5]徐志伟,孙航.VBA读取Excel工作表数据方法探索[J].湖北广播电视大学学报,2011,06:159-160.
[6]沈玉宝.基于ExcelVBA实现学生成绩档案管理自动化[J].阴山学刊(自然科学),2012,02:45-48.
责任编辑:徐向阳
审 稿 人:程家超
TP399
A
1009-8534(2017)03-0102-02
安徽省高校自然科学研究重点项目“基于云平台的职业教育资源管理研究”(KJ2016A778);安徽省高校优秀青年人才支持计划重点项目(gxyqZD2016586);安徽省质量工程项目“基于Blackboard的高职程序设计类课程翻转课堂教学模式研究——以ASP.NET课程为例”(2016jyxm1039)
陈伟,宿州职业技术学院讲师,硕士,研究方向:计算机网络。