基于Excel VBA的讲课竞赛抽签系统设计与实现
- 格式:doc
- 大小:18.23 KB
- 文档页数:7
用WPS 表格制作竞赛评分系统甘肃省永登县第五中学李祖全730311我们知道在许多竞赛中选手的成绩都是现场打分,并且几乎选手成绩出来的同时选手的最后得分及名次也显示出来了,这样使观众看了有一种很强的现场感和刺激性。
其实我们在平时单位举行的各类竞赛中完全可以实现这个效果,就是通过WPS表格制作一个简单的评分系统,下面以一个10名评委、7个班级参加的广播操比赛为例,介绍一下评分系统的制作过程。
1. 制作一张内容如图1所示的工作表,并将其命名为“××中学广播体操比赛评分系统”。
图12. 计算最高分和最低分:在B13和B14单元格中分别输入“=MAX(B3:B12)”和“=MIN(B3:B12)”。
自动填充其他单元格:将鼠标置于B13和B14单元格右下角的“十”字(即填充柄)上,按住鼠标左键向右拖动到H13和H14单元格,班级越多,这种自动填充方法的优势越明显。
3. 计算最后得分:在B15单元格输入“=(SUM(B3:B12)-B13-B14)/8”,该公式的作用是:按照一般的比赛规则,去掉一个最高分、去掉一个最低分,剩余分数的平均分作为选手的最后得分。
为使结果显示格式一致和精确度更高,可使最后得分比每个评委所给的分数多一到两位小数。
例如,可以要求评委的打分统一为一位小数,“最后得分”则保留两位小数。
然后按照2中的方法自动填充C15到H15单元格。
4. 计算名次:在B16单元格中输入“=RANK(B15,$B$15:$H$15)”。
该公式的作用是算出B15单元格的数值在B15到H15各个单元格中的排序,即高一(1)班的名次。
注意:B15中输入的单元格区域必须采用绝对引用否则就会出现错误。
其他单元格的自动填充同上。
5.设置单元格数据有效性:为了使操作者在输入过程中不出现大的错误,我们可以把单元格的数据有效性(数据菜单—有效性)设置一下,比如设为如图2所示,如果超出范围就会发出出错警告。
66 •电子技术与软件工程 Electronic Technology & Software Engineering软件应用• Software Application【关键词】Excel VBA 抽签程序1 引言某卫生学校学生在护理技能操作模拟考试前先要进行抽签,根据学校规定的考试项目及题库试题数目抽取相应的题号进行操作考试,这项工作往年都是采用人工抽签,需要耗费很多的人力和时间,然而在抽签过程中难免会出现很多问题。
随着信息化技术的不断普及,学校工作也进入了由信息技术替代人工操作的改革性阶段,实现抽签过程信息化、自动化工作迫在眉睫,为此利用Excel 对数据的便捷性,VBA 对数据的交互性设计并实现了该抽签程序。
2 VBA技术Visual Basic for Applications(VBA)是Visual Basic 的一种新一代标准宏语言,与传统的宏语言不同,传统的宏语言不具有高级语言特征,没有面向对象的程序设计概念和方法,VBA 是以伪代码的形式运行的,它的功能主要通过模块来实现,同其他面向对象的编程语言一样,VBA 中也有对象、属性、方法和事件。
VBA 易于学习,可以使用宏记录用户的操作,并将其转换为VBA 程序代码,是工作自动化。
3 需求分析某卫生学校在期末进行护理技能操作考试前,每位参加考试的学生需要根据四项考试中题库的总数量随机抽取相应的题号,由于每项操作考试题库数都不相同,而每个班的学生数与总题库数也不相同,学生在随机抽取完一基于Excel VBA 抽签程序的设计与实现文/任宇宁项操作考试的总题库试题后,该题库重新开始轮询,需要实现前后两名学生生成的四组题号不能完全相同。
4 抽签程序设计与实现根据需求分析结果,考虑到该抽签程序的实用性和简洁性,使用Excel VBA 实现,分为前台界面和后台代码,前台界面上有抽签按钮,可使用鼠标点击抽签。
为方便学生抽签,也可以使用键盘上的空格键完成抽签。
Excel还能随机点名或摇号?简单易学,快来试试吧!我们都知道Excel的函数库非常强大,仍有不少地方需要我们探索!今天小编来教教大家如何使用一个Excel函数就可以制作简易的点名工具,办公小白的老师都能够轻松上手!课堂上随机点名器的功能可是老强大了!不仅可以帮助老师解决点名纠结症,还能活跃班级气氛,让学生保持高度紧张!小编使用Excel自制了随机点名器,效果如下:而且只需要简单的三步就可以完成!再也不用到处找资源下载这些小工具啦!而且自己制作的会更加有成就感呢!具体步骤:1、新建一个Excel表格,复制一份班级学生名单并粘贴。
2、在名单右侧,或另建一个Sheet表建立一个文本框并输入函数"INDEX(A2:A12,RANDBETWEEN(1,11))",如下图所示。
其中,INDEX函数是返回表或区域中的值或值的引用。
RANDBETWEEN是返回位于两个指定数之间的一个随机整数。
3、每次只需点击F9即可刷新,获取新数据。
怎么样!是不是超级简单!小编没有骗人!老师们学会了吗?你以为今天的文章就此结束了吗?那当然不是啦!小编还要给大家递上一个Excel摇号工具!效果图:特点:1、只需复制粘贴名单,点击“快摇抽签”即自动生成名单。
2、自动生成记录名单,不用害怕丢失。
3、小编已经制作打包好,大家只需下载解压就可以使用啦!使用说明:1、如果使用office2003及其以上版本的Excel,打开“抽签摇号神V2.0.xls”,将宏安全性设为“低”,然后关闭Excel,再重新打开抽签摇号神器V2.0.xls,就可使用。
2、office2016及其以上版本可使用“抽签摇号神器V2.0.xlsm”。
用Excel做竞赛计分系统一朋友的公司举行演讲比赛,要其制作计分工具,我建议用电脑计算分数并排名,其实用Excel做这个东东很简单。
这次演讲有评委6名,选手20名,要求去掉最高分和最低分后计算选手的总分和平均分。
制作过程如下:(一)、设计表格先看看Excel内表格的样子,不要管里面的数据,只看结构。
1、在A1单元格绘制斜线表头①右键-单元格属性-边框,划一条斜线,如图:②在A1中输入"得分"后按Alt+Enter键强行换行再输入"选手",在"得分"前加几个空格调整其的位置,如图。
2、输入列从B2至K2,依次按题意如图输入标题。
3、输入行首从A2至A2自动填充1号至21号,可先在A2中输入"1号",选中A2,按住Ctrl键不放,出现实心加号后往下拖动即可。
4、设置单元格格式①方法为选中所调整的单元格-右键-设置单元格格式。
②所有单元格显示方式为居中③所有显示文本的单元格(非数值),字体设置为黑体11号,其余设置成宋体。
④B2至I21设置数字类型为"数值",且小数位数为1位。
⑤J2至J21设置数字类型为"数值",小数倍数为2位。
(精度高可以避免名次的并列)⑥K2至K21名次这一栏设置成为常规即可。
5、设置数据有效性。
为了保证每次输入的成绩至少在数值范围上有效,可设定B2至G21的取值区间为0-10的小数。
点"数据"菜单-数据有效性,如图:(二)、输入数据为了能够验证设置的正确性,在成绩区域内填充0至10的小数。
(三)、计分评选1、在H2输入公式=SUM(B2:G2),计算六位评委的打分总和,向下拖到H21。
2、在I2输入公式=SUM(B2:G2)-MAX(B2:G2)-MIN(B2:G2),计算去掉了最高分和最低分的成绩和,向下拖到I21。
3、在J2输入公式=(SUM(B2:G2)-MAX(B2:G2)-MIN(B2:G2))/4,计算最后得分(平均分),向下拖到J21。
怎样在excel制作⼀个⽤于抽签函数怎样在excel制作⼀个⽤于抽签函数,别的⼯具也⾏
假设A列是顺序号1、2、3、4、5
B列是⼈名A、B、C、D、E
可在C1输⼊=vlookup(randbetween(1,5),A:B,2,)
然后按F9 每按⼀次都会随机出⼀个⼈名
⽅法/步骤
1. 1
新建⼀个空⽩excel表格
2. 2
选中多个单元格,并进⾏合并居中(本步骤可以省略)
3. 3
选中单元格,输⼊公式=INT(RAND()*(100-1+1))+1,按回车键确认
【温馨提⽰】
1.记住连同=号⼀起输⼊;
2.如果是在1-50中抽取,则将公式中100替换成50,以此类推。
4. 4
选中单元格,在“开始”选项卡中进⾏字体⼤⼩调整
5. 5
按键盘F9键进⾏刷新,即每按⼀次F9将出现新数字
【温馨提⽰】
长按F9有数字滚动的效果哟~
END
注意事项
本公式在N次刷新中,可能出现重复的数字?希望喜欢的可以收藏跟投票哟~。
巧妙运用PPT制作演讲比赛评分系统准备工作:在C盘新建一文件夹,命名为“考试评分”。
用于存放参赛人员的相关信息,其中Name.txt 中保存着各参赛人员名字(事先准备好Name.txt,每位参赛人员占一行)。
制作过程:1.界面设置打开PowerPoint 2003新建一幻灯片,点击“视图→工具栏→控件工具箱”打开“控件工具箱”。
在工具箱中使用“图像控件”来插入八位语文教师的照片,分数可以用“文本框”来表示,再插入两个“命令按钮”进行操作,分别为“清空”和“最终得分”按钮。
放置好控件之后再调整各控件的属性并美化界面(见图1)。
评委打分的文本框名称为Text1,Text2,……,Text8,“最终得分”按钮的名称为CommandTotal,第二张幻灯片用来显示最后得分,名称为TotalScore。
2.全局变量设置打开VBA编辑器(见图2)输入如下代码:Const Path$ = "C:\考试评分\"'指定得分的统计文件路径Dim sum As Single'全局变量总分Dim AverageScore As Single'全局变量平均得分Dim GroupNum As Integer'全局变量记录组次Private Sub CommandButton1_Click() '清空得分Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""Text5.Text = ""Text6.Text = ""Text7.Text = ""Text8.Text = ""Slide2.TotalScore.Caption = ""'清空下一张幻灯片的最后总分End SubPrivate Sub CommandTotal_Click() '“最终得分”按钮On Error GoTo erDim sum As Single'将8个评委的分数相加得出总分sum sum = sum + CSng(Text1.Text)sum = sum + CSng(Text2.Text)sum = sum + CSng(Text3.Text)sum = sum + CSng(Text4.Text)sum = sum + CSng(Text5.Text)sum = sum + CSng(Text6.Text)sum = sum + CSng(Text7.Text)sum = sum + CSng(Text8.Text)AverageScore = Format(sum / 8, "#.###")'计算出最后得分(平均分),精确到小数点后3位Slide2.TotalScore.Caption = AverageScore'第二张幻灯片显示最后得分If GroupNum>=1 AND GroupNum <= 5 Then'写入最后得分Open Path$ & "InpScore.txt" For Append As #1Print #1, AverageScoreClose #1End IfGroupNum = GroupNum + 1er:End Sub3.建立评奖模块在Microsoft Visual Basic中点击“插入→模块”来建立评奖模块,再写入如下代码:Const Counter = 6'如评一等奖1名,二等奖2名,三等奖3名,故Counter设为6Public StrName(Counter) As StringPublic SngScore(Counter) As SinglePublic Sub ReadDataInp()'读取得分文件,并对得分加以排序On Error GoTo erOpen Path$ & "InpName.txt" For Input As #1For i = 1 To CounterInput #1, StrName(i)NextClose #1Open Path$ & "InpScore.txt" For Input As #2For i = 1 To CounterInput #2, SngScore(i)NextClose #2For i = 1 To CounterFor j = 1 To CounterIf SngScore(i) > SngScore(j) Thena = SngScore(i): SngScore(i) = SngScore(j): SngScore(j) = ab = StrName(i): StrName(i) = StrName(j): StrName(j) = bEnd IfNextNexter:End Sub4.建立显示获奖名单回到PPT中新建一张幻灯片,用于显示获奖名单,按钮名称为CmdDisply,6个文本框的名称为Prize1,……,Prize6。
基于Excel VBA的讲课竞赛抽签系统设计与实现
[摘要] 通过组织讲课竞赛等形式不断提高青年教师教学能力,是高等院校确保人才培养质量稳步提升的重要保证。
在高校讲课竞赛等活动中,需要以公正、快捷、直观的方式对参加人员、讲课题目进行抽签,文章通过实例介绍基于Excel VBA设计讲课竞赛抽签系统的实现方法。
[关键词] VBA;讲课竞赛;抽签系统;洗牌算法
doi :10 . 3969 / j . issn . 1673 - 0194 . 2016. 11. 112
[中图分类号] TP317.3 [文献标识码] A [文章编号] 1673 - 0194(2016)11- 0187- 04
1 引言
在高等院校中,提高青年教师教学能力是不断提升人才培养质量的重要保证。
组织以老带新、岗位练兵、讲课竞赛等形式的教学实践活动成为促进青年教师提高教学能力的
有效手段。
在讲课竞赛活动中,如何保证分组抽签环节的公开、公正、透明,成为参赛人员关注的焦点。
由于通用抽签软件无法满足特定的抽签规则,对抽签数据格式和内容的具体需求存在差异,在解放军信息工程大学校2014年组织的青年教员讲课竞赛活动中,为了高效、公正、透明地进行抽签,自行开发了讲课竞赛抽签系统。
在全年度的竞赛活动中,
抽签系统发挥了重要作用。
2 需求分析
在比赛前,按照竞赛规则,全校各教研室所有符合条件的青年教员均列入参赛备选人员名单,每人准备数个讲课题目。
按照学科类别,将所有教研室分为4个大组,全年组织多轮次讲课比赛,每轮次从每组人员中抽取相同数量的选手参赛,讲课题目和出场顺序随机确定。
同时,为了确保青年教员广泛参与,需要实现全年每个教研室青年教员参赛比例和覆盖面基本相当。
在此规则下,抽签系统既要保证公平、公开,又须符合各项比例要求。
系统需要实现以下功能:(1)按组别抽选参赛选手和讲课题目。
(2)按教研室人员比例进行抽选。
(3)参赛人员和讲课题目随机选定。
(4)抽中人员出场顺序随机确定。
(5)抽选结果填入表格即时打印。
(6)生成各组参赛选手基本信息表用于讲课竞赛工作用表。
3 设计思路
VBA是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。
也可说是一种应用程序视觉化的Basic 脚本。
Office软件中的Word、Excel、Access、Powerpoint都可以利用VBA使这些软件的应用效率更高。
VBA 不但继承了VB 的开发机制,而且VBA 还具有与VB 相似的语言结构,它们的集成开发环境IDE也几乎相同。
由于教员和选题信息是借助Excel 来完成,因此,在Excel 文件中嵌入VBA 程序即可直接实现随机抽签。
在数据准备阶段,需将所有教员、分组、课程、选题等信息汇总在一个统一的Excel表格中。
在每次抽选时根据教研室所在组别确定选题抽选范围,利用随机函数在抽选范围内随机确定选手和题目。
在抽选时需检测所抽选教员是否已在之前被选中过,不能重复抽选同一教员。
对检测通过的教员,标记当前教员本次已被抽选,避免后续抽选过程中被重复抽选。
为被选中教员利用随机函数确定出场顺序,抽选完成之后保存并显示抽选结果。
利用打印按钮对抽选结果信息表进行打印,各教学单位抽签代表签字确认,并同步将各组参赛选手基本信息和选题信息从总表中提取出来,生成参赛选手基本信息表用于讲课竞赛工作用表。
系统程序逻辑结构图如图1所示。
4 软件实现
4.1 程序界面
由于系统功能单一而明确,界面设计应立足实用,尽量简洁。
在系统界面上设置必备的选项和按钮。
选项用于选择
抽选组别,按钮分别设置“抽签”、“重置”、“确定”、“打印”。
“抽签”按钮用于实现抽签功能;“重置”按钮用于重置各项参数,使抽签操作可重复;“确定”按钮用于确认抽签结果,将抽签结果汇总至表格,并提取抽中的教员和题目信息填入参赛选手基本信息表;“打印”按钮用于打印抽签结果表格,供抽签人员现场确认使用。
在按钮下方设置文本域,用于实时显示各组抽签结果,界面如图2所示。
4.2 主要功能实现
抽签的核心在于随机抽取教员和题目、随机确定出场顺序。
由于教员、课程、选题等信息汇总在一个Excel表中,随机抽取教员和题目即可通过随机选择表格行号来实现。
使用Randomize函数随机选择行号的实现是很简单的,关键点在于确定选择范围。
不同教员归属于不同的教研室,不同教研室分布在不同的组中。
使抽选结果符合抽选规则的过程便转化为使抽选范围符合竞赛规则的过程。
为了合理确定抽选范围,只需将备选信息汇总表依次按照分组、教研室、教员、课程、选题的顺序排序,便可按照抽选要求确定一个连续的行号范围作为抽选范围赋值给边界变量。
Private Sub confirmRange()'确定抽选范围
Dim i As Integer
totalT = 0'备选教研室选题总行数
startRow = 0'备选教研室选题起始行
For i = 2 To totalRow '从汇总表计算备选教研室jID抽选
行号范围
If Cells(i,20).Value = jID Then
totalT = totalT + 1
If totalT = 1 Then
startRow = i
Else
End If
Else End If
Next i
End Sub
确定抽选范围后,即可随机抽选教员和选题:
confirmRange
Randomize
iRnd = Int(Rnd * totalT + startRow)'所抽选行号
进行冲突检测后,将iRnd行的教员、课程、选题信息等所需提取的信息赋予二维数组tInfo(x,y)的第二维变量。
选题信息抽选完毕后,需要对出场顺序进行随机,若直接使用随机数产生出场序号,可能会出现出场序号重复的情形。
因此,采用洗牌算法对出场顺序数组进行随机的方法实现。
Private Sub shuffle()'洗牌算法,随机出场顺序
Dim tmp As Integer
Dim i As Integer
Dim j As Integer
For i = 1 To gpTotal 'gpTotal为本组参赛人数
tOrder(i)= i
Next i
Randomize
For i = gpTotal To 1 Step -1
j = Int(Rnd*i)+ 1
tmp = tOrder(j)
tOrder(j)= tOrder(i)
tOrder(i)= tmp
Next i
End Sub
对出场顺序随机洗牌之后将数组tOrder()的值顺序赋予tInfo(x,y)的第一维变量,再将tInfo(x,y)按照第一维变量值的顺序输出第二维变量的内容,即得到随机出场顺序后的抽签结果。
5 结论
本程序经过反复的修改和调试,运行结果达到了系统设计的目标。
以Excel作为数据源,既便于基础数据整理,又不需进行数据转换,开发调试效率可大大提高,运行效果直
观明了。
VBA语法简单易学,基于Excel的VBA程序设计代码简洁、算法易懂,利用简单实用的工具便可高效快捷地实现开发需求。
使用VBA可以为Excel应用程序开发很多新的功能或增强已有的功能,也使得用户对各种数据的处理更加得心应手,大大提高工作效率。
实践证明,利用Excel软件和Excel VBA编程相结合,可高效解决很多日常工作中遇到的常见数据处理问题。
主要参考文献
[1]魏汪洋.Excel VBA语法速查手册[M].北京:化学工业出版社,2011.
[2]孙红梅. 巧用VBA编程实现电大毕业生照片的批量查找[J].福建广播电视大学学报,2014(1):85-88.
[3]门??玉. 利用VBA编程搭建赛事自动计分系统[J].中国管理信息化,2014,17(20):87-89.。