基于Excel VBA的讲课竞赛抽签系统设计与实现
用WPS+表格制作竞赛评分系统

用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所示,如果超出范围就会发出出错警告。
教科研项目专家随机抽取系统(Excel版)

第特组-本次专家名单
郭继 ቤተ መጻሕፍቲ ባይዱ君 李作 肖胜 王树 赵学 徐月
抽奖结束 抽奖结束
打印获奖名单 打印获奖名单
使用说明及注意事项:
1. 本抽奖程序可以根据用户设置对一组候选名单进行抽奖。 2. 请在《候选名单》工作表中录入所有候选项。请连续纵向输入,不留空行。 3. 最多可设置六个级别的奖项。 4. 单项最多可设 5000 名获奖者,获奖者总数不能多于候选人数。 5. 抽奖顺序有两种,即先小奖后大奖或相反。 6. 抽奖方法分为两种:每次抽取一组中的全部获奖者,或每次抽取若干名同一组获奖者。 7. 抽奖一旦开始,请完成整个抽奖过程,不要中途退出程序。
基于Excel VBA抽签程序的设计与实现

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 实现,分为前台界面和后台代码,前台界面上有抽签按钮,可使用鼠标点击抽签。
为方便学生抽签,也可以使用键盘上的空格键完成抽签。
PPT随机抽题系统(附vba代码)

目录
• 系统概述 • 系统设计 • 系统操作流程 • 系统维护与更新 • 常见问题与解决方案 • 案例分享与实际应用
01
系统概T随机抽题系统是一个基于 PowerPoint平台开发的自动化工 具,用于在演示文稿中随机抽取 预设题目并展示给观众。
企业培训考核应用案例
案例概述
在企业培训考核中,PPT随机抽题系统可以用于检验员工的学习 成果和技能掌握情况。
实现方式
根据培训内容和要求,制作相应的PPT和题库,通过VBA代码实现 随机抽题和自动评分功能。
优势特点
能够快速有效地检验员工的学习成果,提高培训效果和员工参与度, 为企业提供客观准确的考核数据。
02
系统设计
数据库设计
数据库类型
选择合适的关系型数据库, 如Microsoft SQL Server 或MySQL,用于存储题库 和用户信息。
数据表设计
设计包含题目信息、用户 信息等数据表,并定义主 键、外键等关系。
字段设计
根据需求定义数据表的字 段,如题目ID、题目内容、 答案等。
用户界面设计
网络在线答题应用案例
案例概述
01
在网络在线答题应用中,PPT随机抽题系统可以用于各种知识竞
赛、趣味答题等活动。
实现方式
02
利用PPT的分享功能,将带有随机抽题系统的PPT分享到网络平
台,参与者通过在线答题参与活动。
优势特点
03
能够吸引大量参与者、提高活动的趣味性和互动性,同时保证
答题的公正性和客观性。
THANKS FOR WATCHING
感谢您的观看
通过VBA代码实现用户登录和身份验 证功能,确保系统安全性。
Excel还能随机点名或摇号?简单易学,快来试试吧!

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做竞赛计分系统一朋友的公司举行演讲比赛,要其制作计分工具,我建议用电脑计算分数并排名,其实用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制作⼀个⽤于抽签函数怎样在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次刷新中,可能出现重复的数字?希望喜欢的可以收藏跟投票哟~。
基于Excel VBA的考试系统的设计与实现

收 稿 日期 :2012—08—13 修 稿 日期 :2012-09一()1 作 者 简介 :刘 本 斌 (1976一),男 ,安 徽 六 安 人 ,硕 士 ,讲 师 ,研 究方 向为 计 算 机 网络 技 术 囝 现代计算机 2012 Nhomakorabea09上
器 .能 访 问 教 师 机 更 好 .不 能 就 拷 贝 ;另 一 好 处 是 不 要 求 必 须 有 一 个 功 能 强 大 的服 务 器 .考 生 就 在 自 己的 机 器 上 从 隐 藏 的试 卷 题 库 抽 题 生 成试 卷 ,避 免 了 都 从 同 一 台 服 务 器 抽 题 的拥 挤 瓶 颈 分 发 与 提 交 试 卷 都 用 机 房 的 广 播 系 统 ,考 生 提 交 试 卷 ,文 件 的 名 称 不 要 改 动 , 同 一 格 式 的名 称 可 以批 量 统 计 .如果 经 过 考 试 后 文 件 名 改 了 .就 用 拖 把 更 名 器 等 软 件 .改 成 统 一 格 式 的 答 卷 名 称 。
基 于 Excel VBA的考试 系统的设计 与实现
刘 本 斌
(苏 州 经 贸职 业 技 术学 院 ,苏 州 251009)
摘 要 :用 ExcelVBA 实现 一 个功 能 完备 的 考试 系 统设 计 , 整 个 考 试 环 节 都 在 一 个 工作 簿里 完 成 , 包括 题 库 工作 表 、出卷 工作 表 、自动 抽 题 、考 生 登 录验 证 、考 试 界 面 、判 卷 统 计 等 功 能 。可 以 联 网 收发 试 卷 .也 可 以拷 贝到 不 能 联 网的 单 机 上 考 试 或 者 练 习 ,对 机 房 环 境 的要 求低 ,只要 普 通机 房 就 能 完 全 满足 正 常教 学 的期 末 考 试 的需 要 。
2024年度课堂抽签点名ppt课件

2024/2/3
7
使用方法与操作流程
开始点名,系统随机 抽取学生名单并展示 在大屏幕上。
教师根据互动情况给 予相应的评价和反馈 。
2024/2/3
学生根据点名结果进 行相应的互动操作, 如抢答、应答等。
8
02
学生信息管理模块
Chapter
2024/2/3
9
学生信息录入与编辑
01
02
03
录入学生基本信息
系统支持多种互动方式,如学生 自主抢答、教师手动点名等,增 加课堂趣味性。
5
使用方法与操作流程
教师端
教师可在系统后台导入学生名单,设 置点名方式和时间等参数,开始或停 止点名。
学生端
学生可通过手机或电脑等设备进入系 统,参与点名互动。
2024/2/3
6
使用方法与操作流程
操作流程 教师登录系统后台,导入学生名单。 设置点名方式和时间等参数。
互动次数统计
统计每个学生的互动次数,包括被点名次数、主 动回答问题次数等。
正确率分析
分析学生的答题正确率,找出易错点和需要重点 讲解的知识点。
课堂活跃度评估
根据学生的互动次数和答题情况,评估课堂的活 跃度,为改进教学方法提供参考。
2024/2/3
20
05
系统优势与不足分析
Chapter
2024/2/3
加强数据加密和备份
对学生名单等敏感数据进行加密处理和定期备份,确保数 据安全。
限制数据访问权限
严格限制对数据的访问权限,防止未经授权的访问和篡改 。
定期检测漏洞和修复
定期对系统进行漏洞检测和修复,确保系统的稳定性和安 全性。
28
巧妙运用PPT制作演讲比赛评分系统

巧妙运用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的随机滚动抽奖系统设计与实现

: ( j 0 f 0 6 5  ̄ 掂 6 7 ~ 一 } 一! L j “ : P [ 1 2 3 ~ 1 2 ~ 3 i 7 ; S r f 薯 i : 3 ■ l : i
0 325
… —
}
0 S l S 2 { S 6 S
“ 抽 奖” f 作 表用来作 为于 I “ 奖 界面 ,此界 向将 作 为
主要界面 、 “ 抽奖”界面包 含抽 奖滚动 显 ≮ 域 ( 默认 抽取 l 0名 )和栩 父的 文 j : 参 数 以及 4个 A t t i v e X控 件
2 功 能 实 现 及 难 点
2 . I 难点与突破
摘 要 :公 司单 位在 组织 活动时 ,大都会有一 个抽 奖环 节来活跃 气氛 抽 奖 方式也有很 多,其 中波常
见的是 利用抽 奖软件 在大屏 幕上进行 随机 滚动抽 奖 目前这 类软件也 不少,介绍 了通过 E x ( ' e I V B A来
制 作 一 个随 机 滚 动 抽 奖 系统
作 者 简 介 : 数删 ( 1 9 8 9 一 ) , ,助 教 ,学 f : ,f i J 1 = 究
参数 2 相 同的排铝 值…现的概牢 u 土 儿乎 趋近 r 零, 终
向 :信息 管 1 j . 信息系统 。
收 稿 日期 :2 0 1 7 — 0 8 — 2 3
“ 于 } ¨ 奖过
操 作复杂 , 若要较 好 的电脑水平 才能操作 : ( 2 )内部 使用 ,通』 t J 性 不强 , ; ( 3 )需 要注册 , f 则无法使 用 , 有 的还需 要 给钱 能 使J } J ; ( 4 )无 法 保存 l 拼 1 奖记录,
excel自制签派题库刷题宏

自制签派考试小软件
很多考试的朋友手里有题库,但是希望能够自己做一些电子版的题库进行练习,这里提供了一个利用Excel宏制作答题小软件的方法:
一、首先,您的题库需要输入到excel表格里面,如下图,第一列是题目,第2-4列为选项,
最后一列为正确答案。
二、录制宏,点击【视图】-【宏】-【录制宏】
三、输入宏名字后【确定】
四、点击【视图】-【宏】-【查看宏】,选择自己刚才录制的宏,点击【编辑】
五、弹出VBA界面,在这个界面咱们就可以输入相应的程序代码了
六、插入窗体:【插入】-【用户窗体】
七、窗体名改为userform
八、如图绘制窗体:
九、将各个控件的名称改成如图。
PPT中VBA编程制作随机抽题系统

本栏目责任编辑:王力计算机教学与教育信息化PPT 中VBA 编程制作随机抽题系统侯伟,吴锦杨*,袁龙华(湖南工学院材料与化学工程学院,湖南衡阳421002)摘要:本随机抽题系统以毕业答辩为例结合VBA 编程和微信公众号互联网技术,改变了传统活动现场环节中的纸质化抽签及抽题的形式,同时还具有答题倒计时功能。
本随机抽题系统可适用于毕业答辩、课堂教学互动、晚会现场抽奖、教学知识竞赛、面试随机抽题等需要随机抽签或抽题的场合。
该系统能够使每一位在场用户通过投影仪屏幕同时看到随机所抽题目,相比传统纸质抽题更公平公正。
关键词:VBA 编程;随机抽题;随机抽签;微信公众号;倒计时中图分类号:TP37文献标识码:A文章编号:1009-3044(2016)30-0100-031背景意义随着电子行业的突飞猛进,计算机及其应用软件走进了人们的生活,我们应该充分利用电子产品资源。
例如,在高校毕业答辩、研究生入学面试等各个抽题环节中一般采用纸质化抽题,这样不仅浪费纸张、浪费碳粉,同时打印机在打印过程中所消耗电能以及微细碳粉对环境产生的危害也不可忽视。
我国仍有大部分地区实行火力发电,需要消耗煤炭,而纸张来源于树皮,这些纸张、电能的消耗都间接导致温室效应,不符合国家长期发展的要求。
通过微信公众号,学生在答辩环节中还可以参与投票表决互动,选出自己认为最佳答辩毕业生。
在高校研究生面试、企业面试、教学知识竞赛、晚会比赛等活动中,通过使用本系统中引用的二维码技术仍然可以满足不同用户的需求。
2技术方案本随机抽题软件可根据参赛选手总人数,自动设置抽签数量,参赛选手只需要点击“开始抽签”控制按钮便可随机滚动生成签号,此时系统状态输出显示器会显示“正在抽签”,点击“停止抽签”控制按钮即可获得自己的抽签结果,此时系统状态输出显示器会显示“您抽的是×号签”。
参赛选手点击“开始抽题”控制按钮时便可高速滚动显示题目编号,此时系统状态输出显示器会显示“正在抽题”,参赛选手点击“停止抽题”控制按钮即可随机不重复获得一个题目编号,此时系统状态输出显示器会显示“请您回答×号题”。
使用 VBA实现Excel表单数据的自动抽取与汇总

使用VBA实现Excel表单数据的自动抽取与汇总[摘要]本文介绍如何使用VBA开发通用型Excel数据抽取和汇总工具,从格式相同内容不同的多份Excel表单中抽取部分或者全部数据并自动汇总到Excel文件中,以方便后续统计分析工作。
[关键词]Excel;VBA;表单;数据抽取;汇总1背景介绍在日常工作中,经常会遇到从多份格式相同但内容不同的Excel表单中抽取部分或者全部数据到一个Excel文件中,以便进行统计分析工作,如调查表汇总统计、实验报告汇总统计和监测数据汇总统计等。
如果表单份数和内容较少、格式简单、时间富裕、准确率要求不高,可以采用人工抽取数据并汇总的方式完成工作。
但如果表单份数和内容非常多、格式复杂、时间紧迫、准确率要求高,采用人工抽取数据并汇总的方式将无法在短时间内准确完成工作。
因此,如何准确、快速地从Excel表单中抽取数据并汇总是数据处理工作中的一个难题。
VBA(VisualBasicForApplication)是Office内嵌的应用开发工具,基于VBA开发的应用程序可以实现一些有规律的、重复性的工作,以替代手工工作方式,提高工作效率和准确率。
本文将介绍如何使用VBA开发数据抽取与汇总工具,实现从格式相同、内容不同的多份Excel表单中自动抽取部分或全部数据并汇总到一个Excel文件中。
2设计思想使用VBA开发的Excel数据抽取与汇总工具的目标是将多份格式相同、内容不同的Excel表单中的部分或者全部数据自动抽取并汇总到一个Excel文件中,以方便后续的统计分析工作。
该工具具有通用性和灵活性两个主要特点。
通用性:该工具适用于所有格式相同内容不同的Excel表单,使用者通过前端展示页面配置数据汇总模板中的参数,使该工具适应新的数据抽取和汇总要求,而不需要改动程序。
灵活性:该工具可以让使用者根据工作需要自由抽取表单中的数据项,可以部分抽取也可以全部抽取,灵活自由。
为此,程序需要解决以下3方面问题:①判断需要抽取数据的Excel目标文件。
vb转盘抽奖课程设计

vb转盘抽奖课程设计一、课程目标知识目标:1. 学生能理解VB编程基本概念,掌握转盘抽奖程序的设计思路和实现方法。
2. 学生能运用随机数生成函数,实现转盘抽奖功能。
3. 学生了解并掌握程序调试与优化的基本方法。
技能目标:1. 学生能独立编写、调试和运行VB程序,实现转盘抽奖功能。
2. 学生具备分析问题、解决问题的能力,能根据实际需求调整程序参数。
3. 学生能运用所学知识,将VB编程应用于实际场景。
情感态度价值观目标:1. 培养学生主动探究、积极思考的学习态度,激发学生对编程的兴趣。
2. 培养学生合作交流、共同解决问题的团队精神,提高学生的沟通能力。
3. 培养学生勇于挑战、不断进取的精神风貌,增强学生对自身能力的信心。
本课程针对五年级学生,结合学科特点,注重培养学生的动手实践能力和逻辑思维能力。
在教学过程中,教师应关注学生的个体差异,因材施教,使学生在轻松愉快的氛围中掌握编程知识。
课程目标具体、可衡量,便于学生和教师在教学过程中进行评估和反馈,确保教学效果。
二、教学内容1. VB编程环境介绍与基本操作- 熟悉VB编程界面及工具栏- 掌握窗体、控件的基本属性设置2. VB编程基础- 变量、常量的声明与使用- 数据类型、运算符与表达式- 控制结构(顺序、选择、循环)3. 随机数生成与转盘抽奖功能实现- 随机数函数Rnd的应用- 转盘抽奖算法设计- 控件事件处理与程序逻辑4. 程序调试与优化- 程序错误类型与调试方法- 代码优化技巧与实践5. 实践项目:制作一个转盘抽奖游戏- 分析需求,设计界面与功能- 编写代码,实现转盘抽奖- 调试、优化与测试教学内容依据课程目标,结合教材章节进行选择和组织。
在教学过程中,教师应按照以下进度安排教学内容:1. 前两节课:介绍VB编程环境,学习基本操作和窗体控件属性设置。
2. 中间两节课:学习VB编程基础,掌握控制结构。
3. 后两节课:学习随机数生成与转盘抽奖功能实现,进行实践项目。
用VB编写抽奖程序

用VB编写抽奖程序一、界面设计新建一个标准的EXE工程。
在Form1窗体中放置一个定时器(Timer1)、两个文本框(Label1,Label2)、两个命令按钮(Command1,Command2)和包含7个元素的控件数组(Label3(0)—Label3(6))。
二、属性设置Label3控件数组中的所有元素皆采用相同设置。
三、代码编写本程序的实现原理是:当用户单击“开始”按钮时,打开定时器,利用定时器控件同时产生两个随机数sj1、sj2,sj1的范围是1~32,sj2的范围是0~49。
当sj1=24的时侯,用sj2与前面产生的中奖号码作比较,若与前面的中奖相同,则退出本过程;若与前面的中奖号码不同,则将此随机数作为中奖号码。
当产生了7个中奖号码时,关闭定时器控件,停止产生随机数。
本程序用到的函数简介:(1)Randomize:初始化随机数的种子数。
(2)Int():返回一个非整形数字取整后的整数。
(3)Rnd:产生一个0~1之间的随机数(大于等于0,但小于1)。
(4)Qbcolor():返回参数(0~15)对应的颜色。
(5)Val:将一个字符形变量转化为一个数值型变量。
(6)Format:格式化一个表达式。
四、运行单击工具栏上的“启动”按钮,启动抽奖程序。
单击“开始”按钮,Label1控件将用五彩缤纷的颜色快速显示1~32之间的数字,并在Label3控件数组中产生一组7个数字的中奖号码。
再次单击“开始”按钮,程序将自动清除Label3控件数组中的内容,并重新产生一组7个数字的中奖号码(与前面的不相同)。
以下是程序的完整代码:Dim sy As Integer′命令按钮1的单击事件Private Sub Command1_Click()′清除Label3控件数组的内容For i=0 To 6Label3(i).Caption=″″NextTimer1.Enabled=True′打开定时器Command1.Enabled=False′使开始按钮失效sy=-1′索引值初始化为-1End Sub′命令按钮2的单击事件Private Sub Command2_Click()Unload Me ′卸载本窗体End Sub′定时器1的定时事件Private Sub Timer1_Timer()Dim sj1,sj2,ys As IntegerRandomize′初始化随机数sj1=Int(Rnd*32)+1sj2=Int(Rnd*50)Label1.Caption=sj1′设置标签1的内容ys=Int(Rnd*6)+9Label1.ForeColor=QBColor(ys)If sj2=24 Then′如果sj2等于24sy=sy+1′索引值加1For a=o To syIf sj1=Val(Label3(a).Caption)Thensy=sy -1Exit SubEnd IfNextLabel3(sy).Caption=Format(sj1, ″00″)Label3(sy).ForeColor=QBColor(ys)End IfIf sy=6 Then′如果索引值等于6Timer1.Enabled=False ′关闭定时器Comm and1.Enabled=True ′使命令按钮有效(即可重新开始抽奖)End IfEnd Sub。
【原创】ExcelVBA实现不重复、多次抽奖小程序

【原创】ExcelVBA实现不重复、多次抽奖⼩程序在活动中,我们常会有抽奖,抽奖箱准备繁琐,现在多采⽤线上抽奖⽅式,下⾯⽤Excel VBA写了⼀个简单的抽奖⼩程序简单测试效果如下,可实现:多次抽奖,且每次抽奖都不重复抽奖界⾯滚动⼈员信息,点击抽奖按钮锁定中奖⼈员中奖⼈员信息在右侧公⽰区域展⽰,最新中奖⼈员展⽰在最上⽅设置了⼀部分误点、误操作提⽰,以及抽奖完成提⽰等已优化,⽀持万⼈级抽奖做了⼀个抽奖简单演⽰,演⽰GIF如下:实现代码如下,按需⾃取,转载请备注出处:'申明Flag、d、e三个模块变量,跨进程引⽤,实现滚动和抽奖数据传递Dim Flag As Boolean '屏幕停⽌滚动并抽奖的判断参数Dim d As Object '将随机抽取的中奖⼈员按⾃增键储存Dim e As Object '将随机抽取的中奖⼈员按原键储存Dim dict_id As Object '本轮参与抽奖⼈员⼯号Sub 重置()'清空上次抽奖内容,将⼈员名单复制到辅助列Application.ScreenUpdating = False '屏幕刷新禁⽤,不展⽰清空数据过程Sheets("抽奖界⾯").SelectSheets("抽奖界⾯").Range("E2") = 0Sheets("抽奖界⾯").Range(Range("B6"), Range("F15")).ClearContentsSheets("抽奖界⾯").Range(Range("J3"), Range("P3").End(xlDown)).ClearContentsSheets("⼈员名单").SelectSheets("⼈员名单").Range(Range("H3"), Range("H3").End(xlDown)).ClearContentsSheets("⼈员名单").Range(Range("A3"), Range("A3").End(xlDown)).Copy _Sheets("⼈员名单").Range("H3")Sheets("抽奖界⾯").SelectApplication.ScreenUpdating = True '屏幕刷新开启,为滚动抽奖做准备End SubSub 准备() '准备开始抽奖,灰⾊区域滚动更新中奖⼈员Set d = NothingSet e = NothingSet dict_id = NothingFlag = Truetext_level = Sheets("抽奖界⾯").Range("A2") '抽取奖项lottery_target = Sheets("抽奖界⾯").Range("D2") '抽奖次数⽬标'判断该奖项是否已经抽取过,当变更了抽取奖项时,⾃动重置已抽取次数为0If Application.WorksheetFunction.CountIfs(Sheets("抽奖界⾯").Range("J:J"), _text_level) = 0 ThenSheets("抽奖界⾯").Range("E2") = 0End If'判断剩余参与⼈数是否⾜够抽奖If Sheets("抽奖界⾯").Range("F2") < Sheets("抽奖界⾯").Range("C2") ThenMsgBox ("剩余参与⼈数不⾜,请修改抽奖参数或停⽌抽奖!!!")Exit SubEnd If'判断该奖项是否已抽取完,提⽰操作⼈员是选择加抽还是变更抽奖奖项If Sheets("抽奖界⾯").Range("E2") >= lottery_target ThenQS_Return = MsgBox(text_level & "抽奖" & lottery_act & "已完成!" & _Chr(10) & "要变更奖项请选择是" & Chr(10) & "要再次抽取" & text_level & _"请选择否", vbYesNo + vbQuestion, "提⽰")If QS_Return = vbYes ThenMsgBox (text_level & "请重新选择奖项,输⼊抽奖次数和单次抽奖⼈数!")Exit SubElseSheets("抽奖界⾯").Range("D2") = Sheets("抽奖界⾯").Range("D2") + _Sheets("抽奖界⾯").Range("E2")End IfEnd If'清空抽奖滚动区域Sheets("抽奖界⾯").Range(Range("B6"), Range("F15")).ClearContentsnum_agent = Sheets("抽奖界⾯").Range("F2")'字典赋值Set dict_id = CreateObject("Scripting.Dictionary")For i = 1 To num_agentdict_id(i) = Sheets("⼈员名单").Cells(i + 2, 8)Nextnum = Sheets("抽奖界⾯").Range("C2")'持续滚动抽奖界⾯,等待点击抽奖后停⽌DoSet d = CreateObject("Scripting.Dictionary")Set e = CreateObject("Scripting.Dictionary")For j = 1 To numDoa = Int(Rnd * num_agent) + 1Loop Until Not e.Exists(a)d(j) = dict_id(a)e(a) = dict_id(a)NextFor m = 1 To 10For n = 1 To 5If n + (m - 1) * 5 > num ThenExit ForElseSheets("抽奖界⾯").Cells(m + 5, n + 1) = d(n + (m - 1) * 5)DoEvents '将控制权传给操作系统,实现滚动的同时可以点击抽奖按钮,⾮常关键!!!End IfNextNextLoop Until Flag = FalseEnd SubSub 抽奖()If Not Flag ThenMsgBox ("请先点击准备按钮,再开始抽奖!!!")Exit SubEnd IfFlag = False '停⽌抽奖滚动,中奖⼈员确定Set f = CreateObject("Scripting.Dictionary")text_level = Sheets("抽奖界⾯").Range("A2")Sheets("抽奖界⾯").Range("E2") = Sheets("抽奖界⾯").Range("E2") + 1 '已抽取次数+1lottery_act = Sheets("抽奖界⾯").Range("E2") '已抽取次数,后⾯需要判断是否提⽰抽奖完成num = Application.WorksheetFunction.CountA(Sheets("抽奖界⾯").Range("B6:F15"))num_exist = Sheets("抽奖界⾯").Range("G2")'将新中奖⼈员信息添加⾄公⽰区域末尾For i = 1 To numSheets("抽奖界⾯").Cells(2 + num_exist + i, 10) = text_levelSheets("抽奖界⾯").Cells(2 + num_exist + i, 11) = lottery_actSheets("抽奖界⾯").Cells(2 + num_exist + i, 12) = d(i)Sheets("抽奖界⾯").Cells(2 + num_exist + i, 13) = _Application.WorksheetFunction.VLookup(d(i), Sheets("⼈员名单").Range("A:E"), 2, False)Sheets("抽奖界⾯").Cells(2 + num_exist + i, 14) = _Application.WorksheetFunction.VLookup(d(i), Sheets("⼈员名单").Range("A:E"), 3, False)Sheets("抽奖界⾯").Cells(2 + num_exist + i, 15) = _Application.WorksheetFunction.VLookup(d(i), Sheets("⼈员名单").Range("A:E"), 4, False)Sheets("抽奖界⾯").Cells(2 + num_exist + i, 16) = _Application.WorksheetFunction.VLookup(d(i), Sheets("⼈员名单").Range("A:E"), 5, False)Next'将所有中奖⼈员存放⾄字典For i = 1 To num_exist + numIf i <= num Thenf(i) = Sheets("抽奖界⾯").Range(Cells(num_exist + i + 2, 10), _Cells(num_exist + i + 2, 16))Elsef(i) = Sheets("抽奖界⾯").Range(Cells(i + 2 - num, 10), Cells(i + 2 - num, 16))End IfNextSheets("抽奖界⾯").Range(Cells(3, 10), Cells(num_exist + num + 3, 16)).ClearContentsSheets("抽奖界⾯").[J3].Resize(f.Count, 7).Value = _Application.Transpose(Application.Transpose(f.items))'奖项抽取完成后提⽰⼈员变更参数If lottery_act = Sheets("抽奖界⾯").Range("D2") ThenMsgBox (text_level & "抽取" & lottery_act & "次已完成,请变更抽奖奖项和次数")End If'更新待抽奖⼈员名单,实现不重复抽奖num_agent = Sheets("抽奖界⾯").Range("F2")Application.ScreenUpdating = False '屏幕刷新禁⽤,不展⽰清空数据过程Sheets("⼈员名单").SelectFor Each Key In edict_id.Remove (Key)NextSheets("⼈员名单").Range(Range("H3"), Range("H3").End(xlDown)).ClearContentsSheets("⼈员名单").[H3].Resize(dict_id.Count, 1).Value = _Application.Transpose(dict_id.items)Sheets("抽奖界⾯").SelectApplication.ScreenUpdating = True '屏幕刷新开启,为下⼀轮滚动抽奖做准备End Sub功能实现思路:通过随机函数Rnd产⽣[0,1)的随机数,再乘以当前参与⼈数放⼤,实现随机抽奖通过字典的Exists⽅法判断是否重复,实现去重抽奖定义模块变量,实现⼈员滚动和抽奖的分离DoEvents语句将控制权传给操作系统,实现滚动的同时可以点击抽奖按钮,是实现抽奖屏幕滚动更新的关键最初以遍历的⽅式回填数据,发现参与⼈数上万时明显卡顿,改⽤字典的items⽅法回填数据(⼀维数据回填到列:Application.Transpose(dict.items),⼆维数据回填到列:Application.Transpose(Application.Transpose(dict.items)))。
一个基于Excel VBA的部门管理系统的设计与实现

一个基于Excel VBA的部门管理系统的设计与实现一、实验目的:通过本项目实践,掌握数据制作的添加、删除、更新和查询基本方法的应用。
二、实验意义:以Excel作为数据库,制作一个部门管理模块,通过界面操作,进行方便地部门管理。
对以后的相关数据管理应用具有一定的参考性和实用性。
三、模块开发技术1、列表框ListIndex(索引)方法及属性ColumnCount(列数),RowSource(数据源)的运用2、数据精确查询应用;3、ActiveWorkbook.Save(工作表保存方法)的应用;4、Rows.Delete(删除记录方法)应用;5、窗体加载事件的应用。
四、实验步骤:请先完成程序填空1、打开DepartmentInfo.xls文件,进入VBE环境,并插入一个用户窗体。
界面设计如图1所示:图1部门管理系统界面设计该界面包括两个框架控件,一个外列表框控件,三个标签控件,三个文字框控件和五个命令按钮控件。
框架控件、标签控件和命令按钮控件通过其Caption 属性更改文字,其中五个命令按钮还要将其属性中的“名称”属性的文字改成与“Caption”文字相同,这样在编写代码时就不会乱了。
2、编写窗体加载事件。
双击窗体(注意:不能对准窗体中的某个控件双击),即窗体中除控件以外的空白地方。
进入代码编写,首先在定义两个全局变量:Dim cs As LongDim rs As Long然后在通用栏下拉框中选择UserForm,在右边栏下拉框中选择Initialize,则自动生成:Private Sub UserForm_Initialize()End Sub在Sub与End Sub之间输入如下代码:Worksheets("Sheet1").Selectcs = Worksheets("Sheet1").Range("a1").End(xlToRight).Columnrs = Worksheets("Sheet1").Range("A65536").End(xlUp).RowListBox1.ColumnCount = csListBox1.RowSource = Worksheets("Sheet1").Range("A2:" & Chr$(64 + cs) & rs & "").AddressWorksheets("Sheet1").Selectcs = Worksheets("Sheet1").Range("a1").End(xlToRight).Columnr = Worksheets("Sheet1").Range("A65536").End(xlUp).RowListBox1.ColumnCount = csListBox1.RowSource = Worksheets("Sheet1").Range("A2:" & Chr$(64 + cs) & rs & "").Address3、双击“查询”按钮,在在Sub和End Sub之间输入如下代码:If TextBox1.Text = "" ThenMsgBox "请输入需要查询部门的编号"Exit SubEnd IfWith Worksheets("Sheet1")rs = Worksheets("Sheet1").Range("A65536").End(xlUp).Row For i = 2 To rsIf .Cells(i, 3) = TextBox1.Text ThenTextBox1.Text = .Cells(i, 3)TextBox2.Text =.Cells(i, 1)TextBox3.Text = .Cells(i, 2)Exit ForEnd IfNextEnd With4、双击“添加”按钮,在Sub和End Sub之间输入如下代码:Dim ncs As Longncs = Worksheets("Sheet1").Range("A65536").End(xlUp).Row + 1 '增加新一行With Worksheets("Sheet1").Cells(ncs, 3) = TextBox1.Text.Cells(ncs, 1) = TextBox2.Text.Cells(ncs, 2) = TextBox3.TextEnd WithActiveWorkbook.Save '保存数据Call UserForm_Initialize '调用窗体加载事件,重新加载数据,以显示新添加的数据。
利用VBA 编程搭建赛事自动计分系统

CHINA MANAGEMENT INFORMATIONIZATION/利用VBA 编程搭建赛事自动计分系统门珮玉(中国石油集团海洋工程有限公司工程设计院,北京100028)[摘要]计分是赛事必不可缺的一个重要环节,海洋工程公司为了能够快捷、直观、准确地进行赛事计分而自主开发了赛事自动计分系统。
本文对该系统的设计原理、应用需求、开发环境、实现方式和应用特点等方面进行了详述和分析,并提出拓展和改进思路,以供交流和学习。
[关键词]计分系统;PowerPoint ;Excel ;Visual Basicfor Applications 编程doi:10.3969/j.issn.1673-0194.2014.20.050[中图分类号]TP391[文献标识码]A [文章编号]1673-0194(2014)20-0087-03[收稿日期]2014-07-181设计背景为了丰富青年员工的业余生活,锻炼英语会话沟通能力,海洋工程公司每年都会在“五四”青年节期间举办英语演讲比赛。
为了增强比赛的专业性、公正性和观赏性,公司自主开发了赛事专用的计分系统,并将该系统推广到集团公司总部及其他内部单位的一些赛事中。
经过5年在比赛中的实际应用,系统得到了不断的升级和完善,功能和性能都大幅提高,得到了领导和员工的一致认可和好评。
2需求分析在比赛中,选手的得分和排名最受关注。
所以为了避免人为操作的失误,确保计分的公正性,同时提高赛事的效率,本系统主要实现以下3个功能:(1)记录参赛选手的得分并根据赛制自动计算最后得分;(2)向观众自动显示每位评委打出的分数以及最后得分;(3)根据得分自动即时排序,并自动向观众显示选手的名次。
3开发环境和原理本计分系统的运行环境为Microsoft Office PowerPoint 和Excel,编程语言为Visual Basic for Applications(VBA),选择这种开发环境的主要原因有以下两点:(1)PowerPoint 和Excel 是日常工作必不可缺的办公软件,大多数人对它们非常熟悉并可熟练使用,且软件的操作界面清晰、文件制作简单,便于开发和操作人员根据赛制或比赛中的突发情况进行修改。
基于Excel VBA的监考教师抽取系统设计与实现

基于Excel VBA的监考教师抽取系统设计与实现
王淏;亢娟娜
【期刊名称】《自动化与仪器仪表》
【年(卷),期】2015(0)2
【摘要】为了解决各类统考中监考教师的现场抽签工作难度,提高工作效率,使用Excel及VBA设计实现了一个操作简单,维护方便的随机抽取系统。
实践证明该系统运行稳定,可靠性强,有效保证了考试的公正性,降低了人为作弊行为。
【总页数】2页(P197-197)
【关键词】监考教师;随机抽取;Excel;VBA
【作者】王淏;亢娟娜
【作者单位】甘肃畜牧工程职业技术学院
【正文语种】中文
【中图分类】TP39
【相关文献】
1.使用VBA实现Excel表单数据的自动抽取与汇总 [J], 刘悦
2.基于Excel VBA的教师基本信息管理系统设计 [J], 唐婷
3.基于Excel VBA的高职院校教师教学工作量考评系统设计与实现 [J], 陈广祥
4.用Excel VBA设计教师监考登记系统 [J], 蒋勇;
5.基于Excel VBA的职称评审专家抽取系统的设计与实现 [J], 王淏;亢娟娜
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于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.。