巧用Excel VBA 快速编排考场试场

合集下载

学校考试考场编排软件(单年级)

学校考试考场编排软件(单年级)

该软件使用Excel2003 VBA开发完成,操作简单易懂,有较高的智能性。

只需设置好《花名册》及《考场设置》工作表,点击相应按钮即可快速编排考场(可排序,也可系统随机——前后左右不同班),生成并打印(系统智能页面设置)《考场座位表》、《班级考场座 该软件使用VBA开发完成,使用时需要启用宏才能正常运行。

如果您的电脑不能运行本程序,请检查是否安装了office的vba组件,并在打开该软件前,先对您的Excel宏安全性进行设置(设置永久有效,在同一台电脑上无需再次设置)。

在Excel2003版本中,可以依以下步骤操作:1.在Excel的菜单栏上依次单击“工具”——“宏”——“安全性”,打开“安全性”对话框,2.在“安全级”选项卡中将宏的安全级别设置为“中”或“低”。

其中推荐使用“中”级。

在Excel2007/2010版本中,可以依以下步骤操作:1.依次单击Excel的Office按钮(2010版本为“文件”按钮)——“Excel选项”,打开“Excel选项”选项卡,在左侧列表中选择“信任中心”,在右侧出现的窗口中点击“信任中心设置”按钮。

2.打开“信任中心”选项卡,在左侧选择“宏设置”,在右侧出现的窗口中选择“禁用所有宏,并发出通知”选项,单击确定完成。

3.在宏的安全性级别设置成功后,再次打开Excel程序文件时,在信息栏(编辑栏上方)会出现安全警告信息,此时点击其中的“选项”按钮打开Office安全选项对话框,在温馨提示1.本软件成绩分析设计是本人想当然而成,加之时间仓促,错误和疏漏在所难免,如果你在使用中不符合您的需要,请及时告知,以便进一步改进!2.本软件工作表之间,相互引用,相互关联,不得随意更改删除,不得保护工作簿,最好不要对工作表重命名,否则将影响本软件的正常使用。

3.操作前请做好数据备份,凡因使用本软件而造成的数据损失,本人概不负责。

巧用Excel排考生座位号

巧用Excel排考生座位号

巧用Excel排考生座位号每年的上半年,都是学校特别是高中大考小考不断的时候,高三的月考、周考简直就是家常便饭。

对于像我们学校这样一个年级动辄十几二十个班(年级人数超过1000)的学校来说,组织一次正规的大型考试是不件很不容易的事。

为了端正考风、保证考试的严肃性,学校要对学生实行班级交叉混合、单人单桌考试,首先遇到的问题就是怎么把这么多班级里的这么多人比较均匀地分散到各个考场去。

如果使用人工来编排的话,这将耗费大量的人力物力,还容易出错。

笔者借助Excel,参照高考随机编排座位的方法,较为轻松地解决了这个问题。

过程如下:一、分班录入名单新建一个工作表,把Sheet1设置成标题依次是“班级”、“姓名”、“随机数”、“考号”的工作表,按班级顺序录入学生名单。

如果已经有了带班级编号的学生名单,那就再好不过了,复制、粘贴过来就行了。

注意各班名单之间不能有空行。

二、用随机数排序把光标框定位到“随机数”下的单元格,输入函数“=RAND()”(默认是返回一个大于零小于1的随机数,函数不加引号),回车。

然后把光标框定位到这个单元格,双击光标框右下角的黑色方块,Excel就会自动填充随机数,直到名单的最后(如图1)。

把光标框定位到随机数所在列的任一单元格,单击工具栏上的“升序”或“降序”按钮,原先分班排列的名单就按随机数的大小排列了,班级的顺序被完全打乱。

如果怕不够乱,可以多点几次“升序”或“降序”(如图2)。

三、编制考生座位号为了便于学生找到考试所在的教室,在编制考生座位号时,可以采用5位数来编号,前三位是教室的编号,假定有203、206、305、401等15个教室;后两位是考生序号,如一个考场40人,可编为01-40。

现在把光标框定位到“考号”下的第一个单元格,输入20301,回车,在下一个单元格输入20302,然后选定这两个单元格,向下拖动光标框右下角的十字手柄,手柄旁会动态显示光标框到达的单元格的编号,当显示20340时停止,这样203考场的座位号就编好了(如图3)。

应用VBA轻松编排考试试场

应用VBA轻松编排考试试场

应用VBA轻松编排考试试场【摘要】为了防止学生考试时作弊,有利于班级的管理和教学,本文结合自己的工作经验总结出了一种科学合理地安排考试试场的方法,每次考试编排试场时考生单人单桌,考生座位随机编排,而且前后座位不是同班的同学,同时打印出贴在试场桌子的考生标签。

【关键词】随机函数;四舍五入函数;VBA代码;主要关键字;排序为了尽量防止考生考试时作弊,得到考生比较的真实的成绩,每次考试学校都要求编排试场时学生单人单桌,而且前后座位不能是同班的同学,同时打印出贴在试场桌子的考生标签。

为此笔者在Excel中用VBA代码轻松实现了学校的要求。

一、试场安排表的设置试场安排表设有“班别”、“人数”、“桌子数”、“试场”、“考生人数”共五列,由于我校是俩学生同坐一张课桌,可以利用四舍五入函数取得桌子数:ROUND (B2/2,0),根据桌子数安排考生人数。

二、贴班级教室表的设置1、思路:分别以随机数和班级为关键字段进行排序,确保每次考生座位随机编排,为了防止前后座位是同班的同学,以人数最多的班级为准先给“贴班级教室”表中的考号赋临时值,按照先排奇数考号再排偶数考号,然后按“考号”字段排序,即可实现同一个班的考生的考号不连续。

最后根据“试场安排表”的顺序给考生赋连续的考号和对应的试场教室。

2、代码:(1)右击工作表标签,在出现的快捷菜单中单击“查看代码”,打开代码设计窗口。

(2)在代码窗口中执行命令“插入/模块”,插入模块1。

(3)录入代码如下:Sub Macro1()Application.ScreenUpdating = FalseDim i As Integer ’定义整型变量用于循环操作Dim j As Integer ’定义整型变量给“贴班级教室”表中的考号赋临时值Dim n As Integer ’定义整型变量给“贴班级教室”表中的考号赋值Dim k As Integer ’定义整型变量定位写入的单元格Dim mj As Integer ’定义整型变量输入人数最多的班级的人数Dim row1 As Integer ’定义整型变量存放“试场安排”表的行数Dim row2 As Integer ’定义整型变量存放“贴班级教室”表的行数Dim y As Integer ’定义整型变量存放“试场安排”表中考生人数Dim c As String ’定义字符串变量存放“试场安排”表中试场教室Dim s As String ’定义字符串变量存放按考号进行排序时的右下角单元格标记’以下代码分别以随机数和班级为关键字段进行排序Sheets(”贴班级教室”).Selectrow2 = Sheets(”贴班级教室”).[a1].CurrentRegion.Rows.Counts = “F” + Trim(Str(row2))Range(”A1”).SelectRange(”A2:” + s).Sort Key1:=Range(”F2”),Order1:=xlAscending,Header:= _xlGuess,OrderCustom:=1,MatchCase:=False,Orientation:=xlTopToBottom,_SortMethod:=xlPinYin,DataOption1:=xlSortNormals = “E” + Trim(Str(row2))Range(”A1”).SelectRange(”A2:” + s).Sort Key1:=Range(”C2”),Order1:=xlAscending,Header:= _xlGuess,OrderCustom:=1,MatchCase:=False,Orientation:=xlTopToBottom,_SortMethod:=xlPinYin,DataOption1:=xlSortNormal’以下代码用于在“贴班级教室”表中给各班级考生的考号赋临时值mj = InputBox(”请输入人数:”,”人数最多的班级”)1、思路:把前面生成的“贴班级教室”表复制两份,分别改名为“贴试场门外”表和“贴试场桌”表,贴试场的桌子的标签要求要有栏头和分割线,首先在“贴试场桌”表第一行插入一空行,再此设计好分割线,然后从第一个考生记录开始在后面插入两个空行,并把第一行的“分割线”和第二行的“栏头”复制到插入的两个空行中,删除最后一行多余的栏头和第一行的“分割线”以便方便排版打印2、代码:(1)右击工作表标签,在出现的快捷菜单中单击“查看代码”,打开代码设计窗口。

巧用Excel编排考场和编班

巧用Excel编排考场和编班

Excel实际应用2例:学生分班和编排考场在学校里经常会遇到给学生编班、安排考场这样的工作,这些事看似简单,可实际操作的时候非常繁琐:编班的时候要充分考虑分配的平均、合理,考试安排既要利用好每一个考场,还要让不同年级的学生穿叉编排,有的考试还要打印考条。

如果学生多的话,手工搞极为艰苦。

当然有这方面专门的软件,像“科利华学校管理套件”、“黑马学校办公系统”等等。

不过这些软件虽然功能强大、专业对口,可身价昂贵,动辄几千上万元,非一般普通中小学所能承受(没办法,中国的教育总是和贫困联系紧密)。

好在我们还有Excel和Access(本文中使用的是Office 2003),再加上你读到了这篇文章,问题就变得不那么可怕了。

(一)分班准备:建立一个Excel数据表,注意一定是两维的表格,中间不要插入其他信息破坏数据结构。

这里我们假设要分六个班,分班依据是入学考试的成绩。

为了力求平均分配学生到六个班里去,我们采用“之”字形的分配原则,也就是说总成绩第1—6名分别对应到1—6班中去,然后7—12名反过来对应6—1班。

这样的分配的目的是使最终分配到各班学生的总分数最接近。

具体操作如下:Step1 选定全部数据单元格,用“排序”、“按总分”,选择“升序”,在“名次”单元格中拖动填充编号(如图1),这里不使用“RANK()”函数的原因是因为“RANK()”函数会产生并列的名次,使下一步操作出现错误。

Step2 在“班级”一列中输入公式:“IF(MOD(L2-1,12)<6,MOD(L2+1,12)-1,12-MOD(L2-1,12))”。

说明:使用“MOD ()”求余函数,产生1—12的序列,然后利用IF函数将7—12名逆序排列。

-1、+1都是为了绕开余数为0的情况(“序号”列为2列)。

(二)考场安排准备:建立Excel数据表,输入需要编排考场的学生信息,同样注意数据的结构。

(注:如果已经建立了学生档案数据库,那就更方便了,可以直接向Excel 中导入数据,一般纯文本文件.TXT或用FoxPro、Access建立的.mdb数据库文件都可直接导入到Excel中。

利用VBA在Excel中开发普通高中考试排座系统

利用VBA在Excel中开发普通高中考试排座系统

利用VBA在Excel中开发普通高中考试排座系统作者:娄青来源:《中国教育信息化·基础教育》2012年第07期摘要:文章介绍利用VBA在Excel中如何开发普通高中考试排座系统,并给出了详细代码。

关键词:Excel;VBA;考试排座系统中图分类号:TP391 文献标识码:B 文章编号:1673-8454(2012)14-0088-05考试在普通高中学校教学过程中有着极其重要的地位,它能检测学生知识掌握程度,能检查教师教学情况,能衡量一所学校办学质量,因此学校常常举行各种月考和联考。

在一所普通高中学校里,往往有三个年级和文理分科情况,一次考试过程中学生考场和座位的安排就是一项任务繁重的工作,一般的考试分析系统没有考生座位安排模块,主管考试工作的教师就经常进行学生试场手工安排的重复性工作。

微软的Excel软件为大家所熟悉和掌握,教师都非常喜欢用它来处理各种教学事务,经过笔者研究,发现Excel软件工作表的单元格排列方式跟考场座位安排有相似之处,都比较工整有序有规律,为此有了利用Excel软件和VBA技术开发普通高中考试排座系统的想法,并进行尝试和实现。

由于高中存在三个年级和文理分科的情况,考试排座就显得非常复杂,我们以高三理科排座为例讲述普通高中考试排座系统,其余排座方法与此差不多,不再重复。

该系统由四个程序模块和五个Excel工作表组成,“高三理科”工作表存放高三理科学生名单,“高三座位”工作表存放各试场座位情况,“试场安排”工作表存放试场人数与各排人数,“班级情况”工作表存放班级数和各班学生人数,“试场分布”工作表存放试场号与试场位置。

下面就四个程序模块代码加以详细说明。

一、系统初始化模块在该模块代码中,程序取得“班级情况”工作表上的数据,如图1所示,赋予并初始化各系统参数,为接下来的排座做好准备,其程序代码如下(附有程序注解):Option ExplicitPublic Gao3LiBanShu As Integer '高三理科班级数Public Gao3Li(20) As Integer '高三理科各班人数Public Gao3Row As Integer '工作表有效行数Public ShiChangHao As Integer '试场号Public ZongShiChang As Integer '总试场数Public ShiChangShu As Integer '试场满员的试场数Public YuShu As Integer '余数(未满员试场的学生人数)Sub Init()Dim i As IntegerGao3LiBanShu = Worksheets("班级情况").Cells(1, 4).Value '取得高三理科班级数For i = 1 To Gao3LiBanShuGao3Li(i) = Worksheets("班级情况").Cells(2 + i, 4).Value '取得高三理科各班人数Next iEnd Sub二、随机排试场模块该模块进行随机方式的试场安排,在程序代码中,根据前面获得的初始化参数计算高三理科学生(如图2“高三理科”工作表所示)人数,并取得“试场安排”工作表的试场人数,如图3所示,由高三理科人数与试场人数计算得出满员试场数和未满员试场人数,对“高三理科”工作表选择的试场列区块产生随机数,同时对随机数进行排序,利用循环语句对满员的试场进行排座,最后对未满员的试场进行排座,如图4试场列所示,其程序代码如下:Sub PaiShiChang() '进行随机方式排试场Dim i As IntegerDim j As IntegerShiChangHao = 0 '初始化试场号,若前面有排过别的试场,ShiChangHao = ShiChangHaoWorksheets("高三理科").Activate '激活高三理科工作表Gao3Row = 1For i = 1 To Gao3LiBanShuGao3Row = Gao3Row + Gao3Li(i) '高三理科表最大有效行数Next iShiChangShu = (Gao3Row - 1) \ Worksheets("试场安排").Cells(4, 2).Value '整除取得试场数YuShu = (Gao3Row - 1) Mod Worksheets("试场安排").Cells(4, 2).Value '整除余数为多少人Cells(1, 3).Value = "试场"Cells(Gao3Row, 3).SelectRange(Selection, "c2").Select '选择试场列区块Selection.Value = "=rand()" '产生随机数Cells(Gao3Row, 3).SelectRange(Selection, "a2").Select'排序,第一关键字:随机数,第二关键字:学号Selection.Sort key1:=Columns(3), order1:=xlAs cending, key2:=Columns(1),order2:=xlAscendingFor i = 1 To ShiChangShu '进行满员的试场排座位For j = 1 To Worksheets("试场安排").Cells(4, 2). Value '进行一个试场的排座位Cells(Worksheets("试场安排").Cells(4, 2).Value * (i - 1) + 1 + j, 3).Value = i + ShiChangHao '赋予试场号Next jNext iZongShiChang = ShiChangShuIf YuShu 0 Then '排最后一个试场For j = 1 To YuShuCells(ShiChangShu * Worksheets("试场安排").Cells(4, 2).Value + 1 + j, 3).Value = ShiChangShu + 1 + ShiChangHaoNext jZongShiChang = ZongShiChang + 1 '高三理科总试场数End IfEnd Sub三、考场座位安排模块该模块进行各试场座位安排,在程序代码中,取得“试场安排”工作表的各排人数,即为各试场排座的各排人数,如图3所示。

EXCEL VBA在考场编排中的设计与实现

EXCEL VBA在考场编排中的设计与实现
/ / 班 级 数
力. 使用户更高效地完成特定任务 。
软件 分为试 场编 排 、 座位 表生成 、 桌 贴 的人员将 基本数 据 , 如 考 生 名 册 ( 含 班级 ) 、 考场基 本信 息 ( 考 场名称 、 每考 场人数 等 ) 录
《 中国教 育信息化 编辑部 : m i s @m o e . e d u . c n
E XC E L V B A在考场编排中的设计与实现
钱建明
( 杭 州市萧 山区新街镇初级 中学, 浙江 杭 州 3 1 1 2 1 7 )
摘 要: 为保 证 考试 的 公 平 、 公正及其严肃性 , 科 学 的考 场座 位 编 排 是 一 个重 要 手 段 。 文章 介 绍 的 是 利 用E XC E L V B A编写考场编排软 件的设计和 实现 , 利用此软件 , 可 轻 松 实 现 学校 考 试 中繁 琐 的 考 场 编 排 、 座位表 、 桌贴 、 班 级 考 生 分 布 等 的 一 次 性 生 成 及 打 印 。经 实 际 应 用 , 操 作 简单 , 方 便 实用 。
在编排试场 时 , 要 尽 量 保 证 学 生 座 位 的 随 机 性 。对
大的 比重 , 而考场 座位编排是考 务信息化管理 中一项十
分 重要的工作 。 考 务 工 作 主 要 分 为 考 前 的 考 场 编 排 和 考 后 的成绩统计 与分析 , 这 里 专 门 就 考 前 的考 场 编 排 展 开 分析和讨论 。 随着 学 校 办 学 规模 逐 渐 扩 大 和 学 生 人 数 的 增加, 考 场 安 排 的工 作 量 不 断加 大 。 因此 , 笔 者 决 定 编 写
关键词 : 随机 ; 试场编排 ; 座位表 ; 桌贴
中图 分 类 号 : T P 3 9 3 文献标志码 : B 文章编号 : 1 6 7 3 — 8 4 5 4 ( 2 0 1 4 ) 1 4 — 0 0 6 5 —0 5

005-轻松为考场随机排座的技巧

005-轻松为考场随机排座的技巧

轻松为考场随机排座的技巧
在使用Excel的时候,可以通过编写函数的方法来生成随机数,为考生随机安排考试座位。

在安装Exce的增强盒子后,可以很轻松地生成任意数值范围内的随机数。

具体的操作步骤如下。

①启动Excel 2010,单击【增强盒子】选项卡【数据】选项组中的【随机数】按钮。

②弹出【随机数生成】对话框。

③单击【请选择需要随机数的区】文本框后面的按钮。

④在工作表中选择随机数生成的区域,这里选择A2:A20单元格区域。

⑤按【Enter】键,返回【随机数生成】对话框,然后根据需要设置【随机数范围】中的数值,这里设置【最小】值为“1”,【最大I】值为“20”,小数位数】值为0。

⑥单击【确定】按钮,即可生成随机数。

本文转载于Excel联盟:/-原文链接:/excel/2010/997.html。

Excel VBA在快速考场排座中的应压

Excel VBA在快速考场排座中的应压

经、 金融等众 多领域 。 在学校工作 中也有着广泛的应用。 例如班级点名 存 放 班 级名 称 册 、 室 座位 表 等 的 电子 文 档 都 是 使 用 它来 创 建 的 。 xe 不 仅 具 有 强 课 E cl r s=bkb 1 4 js(, )∥bkb1 4存 放 班 级 人 数 js(, )
21 0 0年
第 2 期 1
S IN E E H O O YIF R A I N CE C &T C N L G O M T O N
o I 论坛 o T

科技信息
E cl B xeV A在快速考场排座中的应用
陈 冰红 祝振 宇 ( 东工 业大 学华 立学 院教务 处 广 东 增城 广
主要 手 段 ) 发 生 。 的 合 理 的 考 场 座 位编 排 是 考 试 信 息 管 理 中 的 一 项 重 要 工 作 , 学 的 科
bkbn1 R n e r ( ” j.f e(, 9.et h(0 &一 is ,) ag( i ‘ & )O f t - ) x &C r1) = Tm0 ) s 0 T R neTi ”_& i.fe(, 7.et ” ” 一 a g(r j m( . )O st 一 ) x & 一 & ) 0 T R n e(r ( &i.f e 0 - ) et/ 班级 考试信息 存人 a g Ti ” m )Of t(, 6. x / ) s T 将 任 一 考 生 附 近都 是 相 同 考 生 的 现 象 , 致 串 通 舞 弊 ( 场 作 弊 的 一 种 导 考 bkb 数 组 中 js0
大 的 制 表 功 能 , 同 时还 内 置 了 系 统 开 发 工 具 VB A。V A是 指 Vi a B s l u my " R n e”3a r An =.ag(a : ”& s+2 / 生 信 息 由 a )/ 学 3开 始 , 存 放 班 r s B s o p l ain 它 是 在 O ie中广 泛 应 用 的 宏 语 言 , 以直 接 对 级 人 数 ai frA pi t , c c o fc 可 E cl 象 进 行 编 程 .从 而 提 高 E cl xe 对 xe 的利 用 效 率 。 使 用 它 可 以增 强 kx ̄.a g( 3b sx R ne” :”&r b s+2 将 学 生 姓 名 存 人 kx ) sx中

excel编排考场代码

excel编排考场代码

Sheets("考号").Range("A3:C65536").DeleteSheets("考场").Cells.ClearContentsm = InputBox(" 请输入第一个考号。

", "考号", "0")Sheets("考号").[a3] = mColumns("A:D").CopySheets("考号").Columns("F:F").Insert Shift:=xlToRightApplication.CutCopyMode = FalseSheets("考号").SelectSheets("考号").Range("F2:I164").Sort Key1:=Sheets("考号").Range("I3"), Order1:=xlDescending, Header:=xlYesFor i = 3 To Sheets("考号").[h65536].End(xlUp).RowIf Sheets("考号").Range("g" & i) = Sheets("考号").[b65536].End(xlUp) ThenFor j = 1 To 30If Sheets("考号").Range("g" & i + j) <> Sheets("考号").[b65536].End(xlUp) And Sheets("考号").Range("g" & i + j) <> "" ThenIf Sheets("考号").[b65536].End(xlUp).Offset(1, -1) = "" Then Sheets("考号").[b65536].End(xlUp).Offset(1, -1) = Sheets("考号").[b65536].End(xlUp).Offset(0, -1) + 1 Sheets("考号").[b65536].End(xlUp).Offset(1, 1) = Sheets("考号").Range("h" & i + j).Value Sheets("考号").[b65536].End(xlUp).Offset(1, 0) = Sheets("考号").Range("g" & i + j).Value Sheets("考号").Range("h" & i + j) = "": Sheets("考号").Range("g" & i + j) = ""i = i - 1Exit ForEnd IfNextElseIf Sheets("考号").[b65536].End(xlUp).Offset(1, -1) = "" Then Sheets("考号").[b65536].End(xlUp).Offset(1, -1) = Sheets("考号").[b65536].End(xlUp).Offset(0, -1) + 1 Sheets("考号").[b65536].End(xlUp).Offset(1, 1) = Sheets("考号").Range("h" & i)Sheets("考号").[b65536].End(xlUp).Offset(1, 0) = Sheets("考号").Range("g" & i).ValueSheets("考号").Range("h" & i) = "": Sheets("考号").Range("g" & i) = ""End IfNextSheets("考号").Columns("F:K").Delete Shift:=xlToLeftEnd SubSheets("考号").Columns("A:c").CopySheets("考号").Columns("F:F").Insert Shift:=xlToRightSheets("考号").Columns("F:F").CopySheets("考号").Columns("I:I").Insert Shift:=xlToRightApplication.CutCopyMode = Falsej2 = 3m = InputBox(" 请输入考场总数。

怎样用excel自动布置考场

怎样用excel自动布置考场

怎样用excel自动布置考场(图解)怎样用excel自动布置考场(图解)对于专业的考试机构来说,由于经常组织考试,一般都有专门的考试考场布置软件,可以自动地安排考场、座位、准考证号。

其实,用excel也可以非常方便快捷地自动完成考场布置的任务。

下面就让我们看看怎么样做。

一、考场条件设置:二、函数说明:对于excel的函数来说,完全可以在其自带的“函数说明”中查到。

关键是你怎么知道在什么时候用什么函数?这需要通过许多实例来学习,本文就是一个应用的实例。

例如:自动生成考场号的公式“=RIGHT(REPT(0,2)&TEXT(ROUNDUP((ROW()-1)/30,0),0),2)”怎样看懂这个公式?首先,从最里面的函数看。

哪一个是最里面的函数呢?看括号,一层一层往外看。

从里向外依次是:Row()-得到当前行的行号,是一个数值。

(Row()-1)/30--就是将当前行数减去表头行数,然后再除以考场人数。

Roundup()--将括号里的数向上进位,保留整数。

即每增加30人考场数自动加1例如:Roundup(0.033)=1Roundup(1.003)=2Text()__将数值转换成对应的字符。

例如:将数值5转为字符5。

&__将&前后的字符串连接成一个字符串。

例如:“00”&“12”=“0012”Rept()__重复产生字符。

例如:Rept(0,2)=“00”即重复产生2个0。

可简化。

Right()__从右往左截取字符串。

例如:Right("abcdef",2)=ef 即右取2个字符。

再来看自动产生座位号的公式:与上面产生考场号的公式有所不同,增加了下面的函数:Mod()__两数相除取余数,我们通常叫两数取模。

例如:Mod(305,30)=5IF(,,)__这是一个判断取值的函数。

例如:IF(MOD(ROW()-1,30)=0,30,MOD(ROW()-1,30))意思是,当行数减1跟30相除的余数如果是0,则IF()=30,否则IF()的值是就是两数的模。

利用VBA实现自动排列打印考试座次表

利用VBA实现自动排列打印考试座次表

用VBA实现自动排列、打印考试座次表考试是学校考查教师教学效果,教师了解学生学习情况,从而提高教学质量的一项常规工作,也是国家选拔人才的重要手段。

编排考试座次表这种简单重复的工作,以前考务人员采用复制、粘贴的手段来编排、打印,耗费了大量时间和精力。

本人利用VBA制作的这个软件,能自动编排打印考试座次表,从而轻松完成上述工作,为你节约大量的时间和精力。

一、准备工作1、在Excel中建立一个有5张工作表的工作薄,将其名称分别改为:考生名单、40人顺序打印、按30人首尾相连、按40人首尾相连、按50人首尾相连;2、将“考生名单”工作表按如图1格式建好,要求:第一行为标题,第一列存放考号数据,第二列存放班次数据,第三列为姓名,以后各列可有可无,然后按考号(或班次或总分等)排好顺序。

3、将工作表“40顺序打印”、“按30人首尾相连”、“按40人首尾相连”、“按50人首尾相连”分别按图2、图3、图4、图5格式建好。

其中标题文字、行列的宽高、字体、字型、字号等可按自己的需要作相应的改动。

图1二、编写VBA代码1、按“40人顺序打印”代码在“40人顺序打印”工作表中添加一个“按钮”控件,在“指定宏”窗口中将宏名改为“40人顺序打印”,单击新建,然后在代码窗口中输入以下头代码:Sub 按40人打印()Dim ipage As Integer, page As Integer, line As Integer, x As Integer,y as Integer, icount As IntegerApplication.ScreenUpdating = Trueicount = Sheets("考生名单").[a1].CurrentRegion.Rows.Count – 1 //统计考生人数If icount / 40 = Int(icount / 40) Then //计算考室数ipage = icount / 40Elseipage = Int(icount / 40) + 1End IfSheets("40人顺序打印").SelectFor page = 0 To ipage – 1 //为1至最后考室编排座次Cells(1, 10) = page + 1 //在第一行第十列填写考室序号line = page * 40 + 2 //在”考生名单”中查找本考室第一列第一名考生For x = 4 To 11 //为4至11行填写数据For y=1 to 19 //为每一行中1至9列中不被4整除的列填写考号、班次、姓名if y/4<>int(y/4) thencells(x,y)=Sheets("考生名单").Cells(line+(int(y/4)*8),y-int(y/4)*4) //将”考生名单”中”考号”、“班次”、End If //“姓名”填入座次表相应座位中Next yline = line + 1 //考生下移一位Next xSheets("40人顺序打印").PrintOut //打印本考室座次表Next pageEnd Sub图22、“按30人首尾相连”打印代码操作如前“40人顺序打印”,代码如下(部分语句注解同前):Sub 按30人首尾相连()Dim ipage As Integer, page As Integer, line As Integer, x As Integer, y As Integer,icount As IntegerApplication.ScreenUpdating = Trueicount = Sheets("考生名单").[a1].CurrentRegion.Rows.Count - 1If icount / 30 = Int(icount / 30) Thenipage = icount / 30Elseipage = Int(icount / 30) + 1End IfSheets("按30人首尾相连").SelectFor page = 0 To ipage - 1Cells(1, 8) = page + 1line = page * 30 + 2 //查找第一列第一位考生For x = 4 To 11 //填写考室第一列考生数据For y= 1 to 3 //填写本列每一考生数据Cells(x, y) = Sheets("考生名单").Cells(line, y)Next yline = line + 1 //考生下移一位Next xline = page * 30 + 16 //查找第二列第一位考生For x = 5 To 11 //填写考室第二列考生数据For y = 5 To 7 //填写本列每一考生数据Cells(x, y) = Sheets("考生名单").Cells(line, y - 4)Next yline = line – 1 //考生前移一位Next xline = page * 30 + 17 //查找第三列第一位考生For x = 5 To 11 //填写考室第三列考生数据For y = 9 To 11Cells(x, y) = Sheets("考生名单").Cells(line, y - 8)Next yline = line + 1 //考生下移一位Next xline = page * 30 + 31 //查找第四列第一位考生For x = 4 To 11 //填写考室第四列考生数据For y = 13 To 15Cells(x, y) = Sheets("考生名单").Cells(line, y - 12)Next yline = line – 1 / /考生前移一位Next xSheets("按30人首尾相连").PrintOutNext pageEnd Sub图33、“按40人首尾相连”打印代码操作如前“40人顺序打印”,代码如下(部分语句注解同前):Sub 按40人首尾相连()Dim ipage As Integer, page As Integer, line As Integer, x As Integer, y As Integer, icount As IntegerApplication.ScreenUpdating = Trueicount = Sheets("考生名单").[a1].CurrentRegion.Rows.Count - 1If icount / 40 = Int(icount / 40) Thenipage = icount / 40Elseipage = Int(icount / 40) + 1End IfSheets("按40人首尾相连").SelectFor page = 0 To ipage - 1Cells(1, 10) = page + 1line = page * 40 + 2For y = 1 To 5For x = 4 To 11If y / 2 <> Int(y / 2) Then //排列奇数列考生数据,下面三行语也可采用一个循环语句实现Cells(x, (y - 1) * 4 + 1) = Sheets("考生名单").Cells(line + (y - 1) * 8, 1)Cells(x, (y - 1) * 4 + 2) = Sheets("考生名单").Cells(line + (y - 1) * 8, 2)Cells(x, (y - 1) * 4 + 3) = Sheets("考生名单").Cells(line + (y - 1) * 8, 3)line = line + 1Else //填写偶数列考生数据Cells(x, (y - 1) * 4 + 1) = Sheets("考生名单").Cells(line + (y - 1) * 8 - 1, 1)Cells(x, (y - 1) * 4 + 2) = Sheets("考生名单").Cells(line + (y - 1) * 8 - 1, 2)Cells(x, (y - 1) * 4 + 3) = Sheets("考生名单").Cells(line + (y - 1) * 8 - 1, 3)line = line - 1End IfNext xNext ySheets("按40人首尾相连").PrintOutNext pageEnd Sub图44、“按50人首尾相连”打印代码操作如前“40人顺序打印”,代码如下(部分语句注解同前):Sub 按50人首尾相连()Dim ipage As Integer, page As Integer, line As Integer, x As Integer, y As Integer, icount As Integer Application.ScreenUpdating = Trueicount = Sheets("考生名单").[a1].CurrentRegion.Rows.Count - 1If icount / 50 = Int(icount / 50) Thenipage = icount / 50Elseipage = Int(icount / 50) + 1End IfSheets("按50人首尾相连").SelectFor page = 0 To ipage - 1Cells(1, 9) = page + 1line = page * 50 + 2For y = 1 To 5For x = 4 To 13If y / 2 <> Int(y / 2) ThenCells(x, (y - 1) * 4 + 1) = Sheets("考生名单").Cells(line + (y - 1) * 10, 1)Cells(x, (y - 1) * 4 + 2) = Sheets("考生名单").Cells(line + (y - 1) * 10, 2)Cells(x, (y - 1) * 4 + 3) = Sheets("考生名单").Cells(line + (y - 1) * 10, 3)line = line + 1ElseCells(x, (y - 1) * 4 + 1) = Sheets("考生名单").Cells(line + (y - 1) * 10 - 1, 1)Cells(x, (y - 1) * 4 + 2) = Sheets("考生名单").Cells(line + (y - 1) * 10 - 1, 2)Cells(x, (y - 1) * 4 + 3) = Sheets("考生名单").Cells(line + (y - 1) * 10 - 1, 3)line = line - 1End IfNext xNext ySheets("按50人首尾相连").PrintOutNext pageEnd Sub图5以上几种编排方案已基本上满足各种考试的需要,如有其它格式的需要,只需参考上面代码作相应改动即可,相信它定能为你的工作带来极大的方便。

使用excel编排考场和考号的方法

使用excel编排考场和考号的方法

使用excel编排考场和考号的方法
要使用Excel编排考场和考号,可以按照以下步骤进行操作:
1. 打开Excel并创建一个新的工作表。

2. 在第一列中输入考场号,从第二行开始填写考场号,例如从A2开始。

3. 在第二列中输入考号,从第二行开始填写考号,例如从B2开始。

4. 在第一行中输入标题,例如"A"列中输入“考场号”,"B"列中输入“考号”。

5. 如果需要设置考场和考号的规则,可以在第三列或其他列中添加公式或数据验证,例如可以使用公式在第三列自动生成考号。

6. 完成编排后,可以根据实际需要对表格进行格式化,如调整列宽、设置字体样式等。

7. 如需添加或修改考场或考号,可以直接在相应的单元格中进行编辑。

8. 如果需要对考场和考号进行排序或筛选,可以使用Excel的排序和筛选功能。

9. 在编排完成后,可以将表格保存,也可以打印或导出为其他文件格式。

通过以上步骤,你可以使用Excel编排考场和考号并灵活地进行管理和调整。

基于Excel VBA实现考试自动编排

基于Excel VBA实现考试自动编排

众 多 、课 程多元 、人员 管理结构 复杂的情况 下 .开发考 试 自动编 归属管理单位人数分配到具体考场
排系统对提 高教 学管理工作 的效率将发挥重要作 用 由于各个 3 设 计 思 路
高校课 程体系 、教学管 理方式 、人员 管理模式 、基 础数据结 构各
由于数据交换 的需要 .教务 系统导出的基础教学安排 数据
在被 动接 收信 号的前提下享受到高精度 的定 位与导航 :而 当前
我军 的北 斗系统 .由于需 要终端机主动发射信号 .且对发射 的时 [1]钟剑波.数字营 区智 能监控安全监控 防范关 键技术研究 [D].武汉 :武
间时隔有要求 ,从而定位 的实 时性还不够强 ,精度也不高 。因此 , 汉大学 .2011. 要最终实 现实 战化应用 的“数字化军 营 ”.我们 还要相 当多 的技 [2]黎星辰 ,李生林 ,谢 昌华 ,等.基于物联 网的数字 营区智能管 控系统研
有差异 .已有的编排 软件和开发方式无法适应我校考试 编排 的需 和发布考试安排 表均 使用 Excel表格 格式 .且 Exce1格式数 据既
求 ,只能根据本校具体情况 自行开发符合实际需求的编排软件 便于处理也便 于各需 求分 析
量众多 、考 生人 数众多 、考场 教室资 源有限 、考试 日程与教 学安 效率 。
排交叉 、考生专业分 布与人员管理结构复杂 等各 种矛盾 日渐突
考试 自动编排 的过程不 同于手 工编排 .手工编排 时需 通过
出 ,考 试安排的工作量不断增加 。在此形势下 ,如果 仍沿用手工 人工 检测 的信 息都应 作 为软件 自动 编排 的源数据 进行 规范 整
的空 白工作表 中 ,形成考场编排源数据之二 。此外 ,在 日常教学

Excel在学校中的应用21-考场座位安排表——随机安排考场座位号

Excel在学校中的应用21-考场座位安排表——随机安排考场座位号

Excel在学校中的应用21-考场座位安排表——随机安排考场座位号3.9 考场座位安排表——随机安排考场座位号案例背景无论是中小学还是大学在组织考试时,布置考场都要安排单行独座(随堂测验除外),考试座位号S型排列,并且每个学生的考试座位号是随机抽取确定的,监考教师拿着随机安排考场座位安排表,提前进入考场后将“考场座位安排表”贴在教室门上以便学生查看,学生根据随机安排的座位号在制定位置参加考试。

考场座位安排表的考试座位号是如何随机抽取的呢?安排考试座位号有什么要求呢?首先要根据考场中准备实际安排的考生数抽取座位号,要求不重不漏,第二是由计算机随机抽取。

本案例就以某个班级的30名学生为例,为每个学生随机安排考试座位号,通过学习本案例后您就可以自己制作考场座位安排表为您的学生随机安排考试座位号了。

关键技术点要实现本案例中的功能,学员应该掌握以下EXCEL技术点。

●基础知识选择性粘贴的“转置”功能●函数应用RAND,CEILING函数的应用LARGE,ROUND ,COUNTIF,ROW函数的应用●综合应用函数嵌套数组公式公式审核——公式求值最终效果展示3.9.1创建考试座位表Step 1创建工作簿、重命名工作表创建工作簿“考试座位表.xls“,然后将工作表重命名为”座位表“,并删除多余工作表。

Step 2输入“考试座位表”表格表格标题和字段名在单元格A1输入表格标题“考试座位安排表”,选中单元格区域A1:C1,并单击“合并及居中”按钮。

字体、字型、字号设置为黑体加粗16号,并适当调整列宽。

在单元格区域A2:C2分别输入“学籍号”,“姓名”和“座位号”。

字体、字型、字号设置为标宋14号,居中显示。

Step 3输入学生学籍号和姓名在单元格区域A3:B32输入本班30名学生的学籍号和姓名。

Step4随机确定座位号①在单元格C3输入如下公式,然后按键确认。

“=ROUND(RAND()*50,0) ”②在单元格C4输入如下数组公式,按组合键确认。

考试座位编排vba

考试座位编排vba

考试座位编排vba考试座位编排vba程序开发的准备在开发⼩程序前,⾸先要了解“缅茄杯”对座位编排的具体要求。

“缅茄杯”的考⽣来⾃⾼州市61所初级中学(每所中学的考⽣⼈数由3到400不等,总⼈数1848)。

每个试室⼈数限额是30⼈,按5组6⾏编排。

考⽣的座位是随机的并且来⾃同⼀个学校的考⽣的座位前后左右都不能相邻。

其次选⽤⼀个好⽤的开发软件,本⼈就⽤⾃⼰⽐较常⽤的“VB”。

程序的开发程序的开发,是最重要的,⽽且⼜是最艰难的⼀环⼯作,主要⼯作是代码的编写,它要求“算法”精简优化,操作简单,通⽤好⽤,这⾥我按以下⼏部分进⾏设计。

⼀、数据的导⼊“缅茄杯”的考⽣在报名时,是由学校统⼀上送的。

上送的名单是⽤“EXCELL”格式的⽂件上送的,考⽣的详细信息如下图所⽰:为此程序的第⼀部⼯作是完成考⽣基本数据的导⼊。

其代码编写为:Dim ap As Excel.ApplicationDim bk As Excel.WorkbookDim st1 As Excel.WorksheetSet ap = CreateObject("Excel.Application")cd.DialogTitle = "打开EXCEL⽂件"cd.Filter = "*.xls|*.xls"cd.ShowOpenIf cd.FileName = "" Then MsgBox ("⽂件不能为空"): Exit SubSet bk = ap.Workbooks.Open(cd.FileName)Set st1 = bk.Worksheets(1)cols = 1rows = 1'cells(⾏,列)With st1Do Until .Cells(rows, 1).Value = ""'表格⾏数rows = rows + 1LoopEnd Withrenshu = rows - 2For i = 1 To renshub(i) = Trim(st1.Cells((i + 1), 1).Value)c(i) = Trim(st1.Cells((i + 1), 3).Value)xb(i) = Trim(st1.Cells((i + 1), 4).Value)Next ibk.Closeap.QuitSet ap = Nothing⼆、座位的编排这是程序开发的中⼼环节,我设计的思路简单描述是这样的:先为每个学⽣添加⼀个各不相同的随机数字(⼀⾄考⽣总⼈数,这⾥就是1~1848),再把考⽣按这些随机数按升序的顺序排列,依次编排到第⼀个试室⾄最后⼀个试室的1~30的座位中,然后按试室和座位的顺序对每⼀个考⽣进⾏检查,检查他的前后左右是否有同学校的考⽣,如果有则对他进⾏调整。

基于Excel VBA实现考试自动编排

基于Excel VBA实现考试自动编排

基于Excel VBA实现考试自动编排
周志军;张帆;窦志强
【期刊名称】《中国管理信息化》
【年(卷),期】2016(019)003
【摘要】随着学校教学管理工作的日趋集约化,考试课程数量众多、考试时间与教学日程同步安排,对考试计划安排的精确程度提出越来越高的要求.针对这一现状,作者根据学校的现实教学安排、考场教室资源和人员分布的实际情况,开发了基于Excel VBA技术的考试自动编排系统.文章简要介绍了Excel VBA技术的特点,并从需求分析、设计思路、具体实现等方面详细阐述了基于Excel VBA的考试自动编排系统的开发过程.
【总页数】3页(P181-183)
【作者】周志军;张帆;窦志强
【作者单位】解放军信息工程大学训练部,郑州450001;解放军信息工程大学训练部,郑州450001;解放军信息工程大学训练部,郑州450001
【正文语种】中文
【中图分类】TP317.3
【相关文献】
1.基于VBA的EXCEL操作考试及评分系统的研究与实现 [J], 孙唯
2.基于Excel宏程序实现体育专业课程考试座位随机编排 [J], 郭观池;陈华福
3.基于EXCEL+VBA的电大考务编排辅助系统设计与实现 [J], 赵斌
4.基于Excel VBA的航海学离线自适应考试系统的设计与实现 [J], 黄跃华
5.基于Excel VBA的考试系统的设计与实现 [J], 刘本斌
因版权原因,仅展示原文概要,查看原文内容请购买。

excel编排考场,前后不能有同班同学

excel编排考场,前后不能有同班同学
如何使用excel来编排考场,让同班的学生不能在相邻的 座位上?即要避免同班的同学在同一考场,更要避免相邻 座位不能是同班同学?方法比较简单,使
用填充排序就能解决问题。比如,如下是一个年级的某 个班级的学生花名册,现在我们来排考场和安排座位。 一、先编排考场首先我们要做的就是先安排各个班
级的每个学生所在的考场,尽量让同一考场不能有同班 同学。或者是,同一考场出现部分或极少的同班同学。 比如,一个年级有20个班级,每个班级有50个
进行排序这样就能将同一考场的学生排序到一块。B、同 一考场安排座位同一考场内,多数同学是不同班级的, 但是有一小部分同学是同班级的,因此,我们得
保证同一班级的同学不能在相邻的位置。这可怎么办呢? 得使用什么方法来管。或者将每个考
场的学生数据单独保存成为一个Excel文件。排序的时候, 按照学生姓名进行排序,这样基本就能解决相邻的问题 了,排序好了以后,再通过填充的办法,
电脑教程现在看下图,每个班级每个学生都安排好考城了,分
别在不同的考场,即便是有同班的同学在同一考场,也 是少数人,稍后通过下面的方法,就能解决相邻的问题。 二、同一考场的同班同学不能在相邻位置通
过如上的操作,整个年级的每个学生都安排好了考场了, 现在,要做的就是同一考场内的同一班级的学生不能在 相邻的位置。A、先通过排序的办法,对考场号
给同一考场的学生填充上1到30的座位号。如此,整个编 排考场,同班不能相邻的问题就能圆满的解决了。如果 您想让同一考场的学生座位使用随机号,也是
可以的,那么请参阅本站的其它教程。
精心发布,谢谢阅读收藏,谢谢!
/ 无创亲子鉴定 无创亲子鉴定中心
学生,那么,学生总人数就是1000个人;如果一个考场安 排30个学生,那么,每个考场就有30个座位,那么,总 的考场数量是31个。现在先安排考场

巧用Excel VBA 快速编排考场试场

巧用Excel VBA 快速编排考场试场

巧用Excel VBA 快速编排考场试场的基本原则考场编排的基本原则是:公平、公正、严肃。

具体来说,要做到以下几点:1.同级各班考生被重新随机排序后基本均匀地散布到各个考场;2.同一考场内同一班的考生前后左右均不相邻;3.考场内座位号按照一定的规律排列,方便考生就座和监考人员管理;4.考场内的座位表和桌贴清晰明了,易于查看和管理。

二、利用Excel VBA编排考场座位的步骤1.准备考场编排数据,包括各班级人数、考场数量等信息;2.创建Excel工作表,将考场编排数据录入其中;3.编写VBA程序,实现考场编排功能;4.运行VBA程序,生成考场座位表、桌贴等。

三、VBA程序实现考场编排的方法1.定义VBA数组,存储考场编排数据;2.利用随机数函数,实现同级各班考生随机排座;3.利用循环语句,实现同一考场内同一班的考生前后左右均不相邻;4.利用Excel的打印功能,生成考场座位表、桌贴等。

四、考场编排的注意事项1.在编排考场时,要考虑各班级人数、考场数量等因素,确保每个考场人数基本均衡;2.在编写VBA程序时,要注意程序的逻辑性和可读性,避免出现错误;3.在生成考场座位表、桌贴等时,要注意格式的美观和清晰,方便考生和监考人员查看和管理。

通过巧用Excel VBA编排考场座位,可以快速、准确地实现考场编排,从而保证考试的公平、公正及其严肃性。

同时,这也是一项非常实用的工作技能,对于学校教育工作者和管理人员来说,具有重要的参考价值。

在中高考中,每个考场一般有30名考生,但实际情况可能会出现考场人数、组数和每组人数各不相同的情况。

因此,在编排考场之前,工作人员需要将考生花名册(必须包含班级信息)录入花名册工作表,将考场基本信息(必须包含考场号、各组人数等)录入考场设置工作表中。

在编排考场时,为了保证考生既随机分布,又均匀分布,程序设计中多次使用了随机编排。

首先是班级内部考生的随机编排。

程序在辅助列G中为学生生成一次随机数,然后按照班级和随机数为关键字段进行排序,实现班级内学生顺序的随机性。

用Excel VBA设计考试信息系统

用Excel VBA设计考试信息系统

用Excel VBA设计考试信息系统摘要高校学生期末考试,如果每场考试都采取随机座次,并且直到入考场时学生才知道自己的座次,学生就没有机会提前设计协同作弊。

但是用手工方式实现每场考试随机安排座位,工作量大,效率低下。

使用Excel制作一个考试信息系统,能完美的完成这项工作。

关键词Excel VBA;随机;信息系统1 实际工作中的问题与需要高校学生一般都安排集中期末考试,考试都是各专业单独组织考场,考生都是平时在一起学习的同学。

如果座次直接按照学号,可以方便监考老师检查考生到场情况,但是一直是一样的座次不变,固定考生相邻的时间长了,会出现协同作弊的现象,甚至出现雷同卷。

虽然可以通过监考老师加强监视力度来避免,但是最好用技术的方法来解决。

如果打印出学生学号姓名清单,随机贴到座位上,但是每场考试都贴标签,太麻烦,而且学生不容易找到自己的座位。

后来采用当场抽签的办法,制作两份号码标签,一份贴到考试座位上,另外一份让考生抽签,抽到后对号入座,这种方法虽然能够实现随机排坐,但是太费时间,监考教师手里没有座次表,学生可以趁乱自己换标签调座,另外如果有缺考的学生,难以查找登记。

最后,我们决定还是使用计算机,进行考场安排,以达到事半功倍的效果。

该设想是考场里座位上只贴号码,有N个座位则号码从1~N。

考试前半小时随机产生考生座次表,考试前10分钟在考场门口张贴一张座次表,此表按学号排序,考生可快速查到自己的座位号。

监考教师领一份座次表,此表按座位号排序,监考教师可快速查到每个座位上的考生,对缺考考生快速查找登记。

2 解决问题的思路我们借助Excel电子表格实现这个工作。

首先制作出学生清单,包含学号、姓名、性别等几列,并填入实际数据。

添加一列用来产生随机数,添加另外一列,用来产生座次号。

具体方法如下,在随机数一列第一单元格插入函数rand(),或者直接输入“=rand()”,把这一单元格内容复制到此列其他单元格,或者使用快速填充。

基于ExcelVBA考场教室安排系统的设计与实现

基于ExcelVBA考场教室安排系统的设计与实现

总第69 期南京广播电视大学学报2012 年第4 期Sum No.69No.4.2012Jour nal of Nanjing Radio &TV University基于 Excel VBA 考场教室安排系统的设计与实现韩昌选(南京城市职业学院,江苏南京210002)【摘要】随着学校办学规模逐渐扩大 , 专业不断增多,考试课程数量也随之增加。

针对这一现状,作者根据学校的考场教室安排和人员配置的实际情况,开发了基于E xc e l VBA 技术的考场教室安排系统。

文章简要介绍了 Excel VBA 技术的特点与使用范围,并从系统流程图、系统运行环境、系统初始化、数据的来源、约束条件以及部分算法的实现等六个方面详细阐述了基于E xcel V BA技术的考场教室安排系统的设计与开发。

【关键词】Excel VBA 考场安排【中图分类号】TP315【文献标识码】A【文章编号】1009-1459(2012)04-0082-03开发考场安排系统是学校管理信息化的重要内容,其目的是为了提高教学管理工作的效率。

近年来随着学校办学规模逐渐扩大, 专业不断增多,每学期参加课程考核的学生人数和考试科目的数量也随之增加, 考场安排的工作量不断加大。

在这种情况下, 如果仍然使用手工安排考场这种落后的管理方式, 显然与高效率的教学管理工作不相匹配。

随着教学管理工作的深入进行, 考场安排工作愈发复杂、繁重,所需的周期也较长, 为教学管理工作带来一些不便。

因此,需要利用计算机技术的方法和手段来解决考试安排工作的复杂性问题, 提高考务管理工作的工作效率。

随着电大现代远程开放教育办学规模的扩大,教学场地小、教室考场少、所需考场多、考生人数多、考试科目多的矛盾也日益突出。

根据目前电大系统的办学模式,很多学校的期末考场教室安排工作任务很复杂,虽然中央电大提供了新、老教务管理平台系统,但只是提供了考场号的随机编排功能,无法根据各个学校的具体情况把教室号填充到数据库里面。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

巧用Excel VBA 快速编排考场座位广西桂林市阳朔县外语实验中学莫孟福百度文库下载地址:学校考试考场编排软件(单年级)/view/464023029ec3d5bbfc0a740f.html学校考试考场编排软件(多年级)/view/62cfe5d652d380eb63946d6f.html学校考试考场编排软件(多年级,文理绲编),请联系作者索要。

【摘要】科学的考场座位编排方法可以从根本上杜绝学生考试时的串通舞弊现象,保证考试的公平、公正及其严肃性。

本文结合自己的工作经验,利用Excel VBA编程方法轻松实现了同级各班考生随机排座、且前后左右座位不是同班同学,打印考场座位表、桌贴等功能。

经实际应用,操作简单,方便实用。

【关键词】随机排座;考场编排;座位表;桌贴;VBA数组在编排考场时,既要基于学校实际,如需考虑各考场人数、组数、每组人数等出现差异,充好利用好每一个考场;还要让同级各班考生被重新随机排序后基本均匀地散布到各个考场,基本做到同一考场内同一班的考生前后左右均不相邻,从根本上杜绝学生考试时的串通舞弊现象,保证考试的公平、公正及其严肃性。

随着学校办学规模逐渐扩大和学生人数的增加,考场编排的工作量不断加大。

面对Excel工作表内动辄上千的数据行,通过手工多次排序和复制粘贴数据完成考场编排工作显然太麻烦了。

那么,能不能用相对比较简单的办法来解决问题呢?答案显然是肯定的。

Excel是微软公司的Microsoft office的组件之一,它可以进行各种数据的处理、统计分析,在学校工作中有着广泛的应用。

例如花名册、座位表、登分表等的电子文档都是使用它来创建的。

Excel不仅具有强大的制表功能,同时还内置了系统开发工具VBA。

VBA是指Visual Basic for Application,它是在Office中广泛应用的宏语言,可以直接对Excel对象进行编程,从而提高Excel的利用效率。

使用它可以增强Excel的自动化能力,使用户更高效地完成特定任务。

因此,笔者空闲时用VBA编了个程序,轻松快速地编排考场,生成考场座位表、桌贴等,经实际应用,操作简单,方便实用。

一、考场编排在中高考中各考场人数一般是30人,但基于笔者学校的实际,会出现各考场人数各异、组数各异及每组人数各异的情况。

因此,编排考场前,工作人员必须将考生花名册(必须含班级)录入花名册工作表,考场基本信息(必须含考场号、各组人数等)录入考场设置工作表中,如下图所示。

花名册工作表考场设置工作表编排考场时,为保证考生既要随机分布,又要均匀分布,在程序设计上多次使用了随机编排。

(一)、班级内部考生的随机编排。

程序在G列(辅助列)对学生生成一次随机数,再以班级和随机数为关键字段进行排序,实现班级内学生顺序的随机性。

代码:Randomize (Timer) '初始化随机数生成器For x = 2 To Sht2R '花名册行循环Cells(x, "G") = Rnd 'G列写入随机数Next xWorksheets("花名册").UsedRange.Sort Key1:="班级", Order1:=xlAscending, Key2:= "随机数", Order2:=xlAscending, Header:=xlYes,Orientation:=xlSortColumns '排序运行结果如下图:(二)、各班人数均匀分配到各考场。

程序自动从《花名册》及《考场设置》工作表获取班级人数、考生总人数及考场人数后,按比例取整的方式计算各班在各考场分配的人数,公式:各班在各考场分配的人数=班级人数*(考场人数/考生总人数)。

再因取整余下的考生作二次分配。

代码:为提高程序运行速度,程序将各工作表数据读入VBA数组中处理。

For x = 2 To UBound(ArrKC, 1) '考场号循环j = j + 1 '考场号列号For i = 2 To UBound(RenShuFenPei, 1) '班级循环RenShuFenPei(i, j) = Val(ArrBJ(i, 2)) * Val(ArrKC(i,9)) \Val(ArrTJ(2, 2)) '按比例分配考生——班级人数*(考场设置的人数/考生总人数)Next iNext x人数分配结果如下图:(三)、编排考场号。

获得各班在各考场的人数后,对各班每考生按分配的人数编考场号,对二次分配考生编上"座位" & vbTab & "100"(键盘无法输入vbTab,可防错)。

代码:m = 0ArrSht2= Worksheets("花名册").UsedRange.Value '读入数组处理数据For x = 2 To Sht2R 'x某班第一个考生行号k = 0'按分配人数按班编考场号***********For x1 = 2 To UBound(RenShuFenPei, 1) '班级循环If ArrSht2(x, Sht2BJL) = RenShuFenPei(x1, 1) Then '班级名相同For y = 2 To UBound(RenShuFenPei, 2) '考场循环For j = 1 To Val(RenShuFenPei(x1, y)) '该班x1该考场y 分配的人数ArrSht2(x + k + j - 1, Sht2L + 2) = RenShuFenPei(1, y) '考场号ArrSht2(x + k + j - 1, Sht2L + 3) = j + Rnd '座位号(辅助列,处理前后同班)Next jk = k + Val(RenShuFenPei(x1, y)) '该班已编排的人数Next yExit ForEnd IfNext x1'*********************************'该班剩余考生编辅助考场号*************Do While k < Val(RenShuFenPei(x1, 2)) '(班级人数)该班未编考场号人数循环ArrSht2(x + k, Sht2L + 2) = "座位" & vbTab & "100" '考场号(辅助列)ArrSht2(x + k, Sht2L + 3) = Rnd '座位号(辅助列)k = k + 1 '该班已编排的人数累加(含辅助)m = m + 1 '年级编辅助考场号"座位100"的考生人数累加Loop'*********************************x = x + k - 1 '该班结束的行号= 开始行号+班级人数-1 Next x将数据写入工作表,并以考场号和座位号为关键字段进行排序,这样二次分配的考生都汇集到一起,并且按座位号列生成的随机数随机排序。

然后采用循环语句,将二次分配考生分配到每考场,如果该考场人数已满,则分配给下一考场。

这样使得剩余考生还是能尽可能均匀的、随机的分布到各考场。

代码:For x = 2 To UBound(ArrSht2, 1)If ArrSht2(x, Sht2L + 2) = "座位" & vbTab & "100" Thenk = x '二次分配考生开始行号Exit ForEnd IfNext xx = k '开始行号i = Int(KCshu * Rnd + 1) '随机产生第一个考生的考场号Do While x < m + k '年级未编考场号的行号循环If i Mod KCshu <> 0 Theny = (i Mod KCshu) + 2Elsey = KCshu + 2End IfIf Val(RenShuFenPei(11, y)) < Val(RenShuFenPei(12, y)) Then '已编排考生数<该考场设置的考生数ArrSht2(x, Sht2L + 2) = RenShuFenPei(3, y) '考场号For j = 2 To UBound(RenShuFenPei, 1)If ArrSht2(x, Sht2BJL) = RenShuFenPei(j, 1) Then '班级名相同ArrBJL = jExit ForEnd IfNext jRenShuFenPei(ArrBJL, y) = Val(RenShuFenPei(ArrBJL, y)) + 1 '该班ArrBJL该考场y分配的人数累加ArrSht2(x, Sht2L + 3) = Val(RenShuFenPei(ArrBJL, y)) + Rnd '座位号(辅助列,处理前后同班)RenShuFenPei(11, y) = Val(RenShuFenPei(11, y)) + 1 '考场已分配的人数累加x = x + 1 '循环到下一行End Ifi = (i Mod KCshu) + 1 '考场号列号累加Loop(四)、前后左右同班处理。

在上面编排考场号的代码“ArrSht2(x + k + j - 1, Sht2L + 3) = j + Rnd”用于初步处理前后同班问题。

例如1、4、5、6、7、8、9、10班在第1考场均分配了6名考生,各班考生在座位号列都生成1.xxx、2.xxx、3.xxx、4.xxx、5.xxx、6.xxx样式的随机数,如下图1。

再以考场号和座位号为关键字段进行排序后,初步实现前后无同班,如下图2。

图1图2程序再按蛇形排列座位的方法检查各座位前后左右是否有同班,如果遇有同班,程序通过循环将该考生与同考场其他考生调换座位,直到符合前后左右无同班后退出循环。

代码:k = 2 '第一行为标题列,考生从第二行开始Do While k <= UBound(ArrSht2, 1)'座次按考场写入数组********For x = 2 To UBound(ArrKC, 1) '考场号循环If ArrSht2(k, Sht2L + 2) = ArrKC(x, 2) Then '找到考场Exit ForEnd IfNext xi = 0For y = 3 To UBound(ArrKC, 2) - 1 '组循环If Val(ArrKC(x, y)) > 0 Then '该组分配了人数i = i + 1 '组数累加For j = 1 To Val(ArrKC(x, y)) '该组人数If i Mod 2 <> 0 Then ' 奇数组RenShuFenPei(j, 2 * i - 1) = ArrSht2(k + j - 1,Sht2BJL) '班级RenShuFenPei(j, 2 * i) = k + j - 1 '行号Else ' 偶数组RenShuFenPei(j, 2 * i - 1) = ArrSht2(k + Val(ArrKC(x, y)) - j, Sht2BJL) '班级RenShuFenPei(j, 2 * i) = k + Val(ArrKC(x, y)) - j'行号End IfNext jk = k + Val(ArrKC(x, y)) '已编排的总人数(年级)+1End IfNext y'*************************'处理前后左右同班***********For m = 1 To MaxRenFor y = 1 To UBound(RenShuFenPei, 2) Step 2If Len(RenShuFenPei(m, y)) > 0 And Len(RenShuFenPei(m, yR)) > 0 ThenIf RenShuFenPei(m, y) = RenShuFenPei(m, yR) Or RenShuFenPei(m, y) = RenShuFenPei(mD, y) Then '左右或前后同班For y1 = 1 To UBound(RenShuFenPei, 2) Step 2Select Case RenShuFenPei(m1, y1)Case ""Case RenShuFenPei(m, y)Case RenShuFenPei(mU, y)Case RenShuFenPei(mD, y)Case RenShuFenPei(m, yL)Case RenShuFenPei(m, yR)Case ElseSelect Case RenShuFenPei(m, y)Case RenShuFenPei(m1U, y1)Case RenShuFenPei(m1D, y1)Case RenShuFenPei(m1, y1R)Case RenShuFenPei(m1, y1L)Case Else'改动座次表&&&&&&&&&StrY = RenShuFenPei(m, y)RenShuFenPei(m, y) = RenShuFenPei(m1, y1)RenShuFenPei(m1, y1) = StrY'&&&&&&&&&&&&&&&&&&'改动考场编排表&&&&&&&&&&For j = 1 To Sht2LTemp1(0, j) =ArrSht2(RenShuFenPei(m, y + 1), j)Next jFor j = 1 To Sht2LArrSht2(RenShuFenPei(m, y + 1), j) = ArrSht2(RenShuFenPei(m1, y1 + 1), j)Next jFor j = 1 To Sht2LArrSht2(RenShuFenPei(m1, y1 + 1), j) = Temp1(0, j)Next j'&&&&&&&&&&&&End SelectEnd SelectNext yNext m'***************Loop运行结果如图3所示:图3最后对各考生编上座位号,考场编排完成。

相关文档
最新文档