用VBA编排学生座位表

合集下载

用Excel VBA轻松实现座位表的编排

用Excel VBA轻松实现座位表的编排

单击 V A代码编辑窗口中的际 准】 B 工具栏中的[ i 主
行子过程, 用户窗 口1 或按 F 5键 , 在座位 表 中弹 出一 则 个 如图 1 所示 的对话框 。 () 3 建立新 的函数 Z oi ) 来 排位 , 击【 uc(用 单 插入 】 /
【 模块】在代码窗 口中输入如下 代码 : ,
Itg r ne e
“ 视力表 ” 输入学 号 、 姓名 和视力 等有关 数据 并将其按
“ 视力 ” 排序 。
收稿 日期 :0 - 0 1 21 1- 9 0 作 者 简介 : 瑞梅 (98 )女 , 师, 连 16一 , 讲 学士 , 究方 向: 研 计算 机应 用 , 计算机 研 究与教 学 。
Wa l函数将字符转换 为数字 将输入 的数字赋给变量 G op r u G op=V lIp to(本班学生分为几组 ) r u a( uB x ” n )
En u dSb
作表格。 种做法是 很麻烦 的 , 这 因为每编 制一次都需要
重 复同样 的工作 。因此 , 研究一种 简单有效 的方法来编
Is= i+ 2 x
Frj= 3 T rw o o I s+ 3 o
给座位表赋值
S et ” he ( 座位 表 ”.e sji= S et ” s ) l (, Cl ) he ( 视力 s 表” .e sI ,) ) l (x 2 Cl s
再在 Z o i) uc( 函数的倒数第二行加人如下代码 : Z oi ru )调用 Z oi uc( o p g u c 函数对学生进行排座 按 F 健 弹出如 图 2 5 所示 的宏对话 框。单击【 】 运行 命令 按钮 , 在弹 出的对话 框 中输 人 “0 , 击 “ l” 单 确定 ” ,

VBA在Excel中实现表格排序的方法总结

VBA在Excel中实现表格排序的方法总结

VBA在Excel中实现表格排序的方法总结Excel是一款功能强大的数据处理工具,而VBA(Visual Basic for Applications)是其自带的编程语言,提供了许多功能强大的数据处理和自动化操作的方法。

其中之一就是通过VBA在Excel中实现表格排序。

本文将总结VBA中几种常用的表格排序方法,供读者参考和学习。

一、VBA中的Range对象在VBA中,Range对象用于表示Excel中的单元格或一系列单元格。

通过指定Range对象的属性和方法,我们可以在VBA中对表格进行排序。

下面是一个实例,展示如何使用Range对象进行排序:```Sub SortRange()Dim ws As WorksheetDim rng As Range' 指定要排序的工作表和范围Set ws = ThisWorkbook.Worksheets("Sheet1")Set rng = ws.Range("A1:C10")' 对范围内的数据进行排序rng.Sort Key1:=rng.Columns(1), Order1:=xlAscending,Header:=xlYesEnd Sub```上述代码首先使用`Set`语句指定了要排序的工作表和范围。

接着,通过调用`Sort`方法对范围内的数据进行排序。

在这个例子中,我们通过`Key1`参数指定了基于第一列进行排序,`Order1`参数指定了升序排序,`Header`参数指定了有表头。

根据需求,可以根据实际情况进行调整。

二、VBA中的ListObject对象除了使用Range对象,我们还可以使用ListObject对象来实现表格排序。

ListObject对象是Excel中用于处理数据表的对象,它提供了更多的排序选项和灵活性。

下面是一个使用ListObject对象进行排序的示例:```Sub SortListObject()Dim ws As WorksheetDim tbl As ListObject' 指定要排序的工作表和表格Set ws = ThisWorkbook.Worksheets("Sheet1")Set tbl = ws.ListObjects("Table1")' 对表格进行排序tbl.Sort.SortFields.Cleartbl.Sort.SortFields.Add Key:=tbl.Range.Columns(1), _SortOn:=xlSortOnValues, _Order:=xlAscending, _DataOption:=xlSortNormalWith tbl.Sort.SetRange tbl.Range.Header = xlYes.MatchCase = False.ApplyEnd WithEnd Sub```上述代码首先使用`Set`语句指定要排序的工作表和表格。

ExcelVBA(15)–用VBA给表格排序

ExcelVBA(15)–用VBA给表格排序

ExcelVBA(15)–⽤VBA给表格排序本⽂转载⾃公众号:Excel学习世界,作者:我是⼩花椒。

如有侵权,请联系我删除。

今天讲解如何⽤ VBA 给表格排序。

案例:对下表排序,排序优先顺序依次为“实际奖⾦”和“奖⾦基数”,从⼤到⼩排。

⽅法:1. 按 Alt F11 打开 VBE,输⼊以下代码:Sub st()Range('A1:E9').CurrentRegion.Sort KEY1:=Range('E1'), ORDER1:=xlDescending, _KEY2:=Range('C1'), ORDER2:=xlDescending, _Header:=xlYes'设置需要排序的区域范围'A1:E9',第⼀、第⼆排序字段依次为'E1'和'C1',顺序都为倒序,第⼀⾏需要包含标题End Sub部分代码释义:Range('A1:E9').CurrentRegion.Sort:对括号中的区域排序KEY1:=Range('E1'), :第⼀个排序字段为 E1,即“实际奖⾦”ORDER1:=xlDescending:第⼀个排序顺序是降序排列。

如果需要升序,= 后⾯就写 xlAscending_:空格下划线是 vba 代码换⾏符,代码过长的情况下,换⾏会增加可读性。

代码虽然换⾏,但还是⼀整句,所以在这后⾯⽆法添加注释Header:=xlYes:需要包含标题,如果不需要,就写 xlNo2. 制作按钮:1) 在表格界⾯点击“开发⼯具”-->“插⼊”-->“按钮”2) 将按钮名称改为“排序”3) 将按钮的宏指定为上述“st”3. 现在点击按钮运⾏代码,就已经按照我们要求排序了。

用Excel VBA轻松实现座位表的编排

用Excel VBA轻松实现座位表的编排

用Excel VBA轻松实现座位表的编排
连瑞梅
【期刊名称】《农业网络信息》
【年(卷),期】2007(000)002
【摘要】使用Excel绑定的VBA编辑器,能够减轻操作者的工作负担,使Excel的大量重复性操作变得简单而快捷.本文主要介绍如何用Excel VBA来轻松实现学生座位表的编排.
【总页数】2页(P119-120)
【作者】连瑞梅
【作者单位】潍坊学院,山东,潍坊,261061
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于EXCEL+VBA的电大考务编排辅助系统设计与实现 [J], 赵斌
2.利用EXCEL实现大型会议座位表的自动编排 [J], 郑树旭
3.基于Excel VBA实现考试自动编排 [J], 周志军;张帆;窦志强
4.巧用Excel与VBA实现座位表的自动生成 [J], 王月兰
5.利用Excel和VBA轻松实现批量抽签 [J], 但山秀
因版权原因,仅展示原文概要,查看原文内容请购买。

巧用Excel VBA 快速编排考场

巧用Excel VBA 快速编排考场

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

利用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

Excel VBA编程 典型实例——使用VBA进行排序

Excel VBA编程  典型实例——使用VBA进行排序

Excel VBA编程典型实例——使用VBA进行排序使用Excel 2007提供的排序按钮进行排序时,会将班级或学生的姓名也一起按升序或降序的方式进行排序,从而打乱了数据原有的顺序。

使用VBA代码对工作表进行排序时,只会在每个数据的后面标注出该数据处于的名次,而不会打乱数据原有的顺序。

1.练习要点● 冒泡算法的应用● 循环语句2.操作步骤:(1)新建一个空白工作表,创建如图7-12所示的表格。

图7-12 创建成绩表(2)单击【控件】组中的【插入】下拉按钮,在【ActiveX 控件】组中,选择【命令按钮(ActiveX 控件)】按钮。

然后,在工作表中绘制该按钮,如图7-13所示。

图7-13 绘制控件按钮(3)选择所绘制的“命令控件”按钮,并在【属性】对话框中,设置Caption 为“成绩排序”文字,如图7-14所示。

图7-14 设置按钮属性提 示单击【控件】组中的【控件属性】按钮,即可打开【属性】对话框。

、(4)选择“成绩排序”命令按钮,在【属性】对话框中,单击Font 右侧的【浏览】按钮,如图7-15所示。

创建选择绘制效果图7-15 单击【浏览】按钮(5)在弹出的【字体】对话框中,设置【字体】为“隶书”;【大小】为“三号”,如图7-16所示。

图7-16 设置字体格式技 巧选择“命令控件”按钮中的文字,在【字体】选项卡中,也可以设置控件的字体格式。

(6)在弹出的代码编辑器窗口中,输入如图7-17所示的代码。

图7-17 输入代码其中,在代码编辑窗口中输入的代码如下:Private Sub CommandButton1_Click()Dim myarray()Dim m, n, i, j As Integern = Application.WorksheetFunction.CountA(Columns(1))'从第二列到第八列一共循环七次For m = 2 To 8'给数组赋值ReDim myarray(n)For i = 3 To nmyarray(i) = Cells(i, m).ValueNext i选择单击设置 效果输入'用冒泡排序法对数组中的元素进行排序操作For j = 0 To n - 2For i = n To j + 2 Step -1If myarray(i) > myarray(i - 1) Thentemp = myarray(i)myarray(i) = myarray(i - 1)myarray(i - 1) = tempEnd IfNextNextFor i = 1 To nDebug.Print myarray(i)Next i'将各数值在列中的排名加括号后添加到原单元格的数值后面,中间空一个空格For i = 3 To ns = Application.WorksheetFunction.Match(Cells(i, m), myarray, -1) - 1Cells(i, m).Value = Cells(i, m).Value & Space(1) & "(" & s & ")"Next iNext m'主体程序执行完毕使各列的宽度与单元格的大小相适应Cells.SelectSelection.Columns.AutoFitCommandButton1.Enabled = TrueMsgBox "排序完成!", vbOKOnly, "提示框"End Sub(7)单击【控件】组中的【设计模式】按钮,即可取消该模式。

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

<
用VBA编排学生座位表
(2011-09-10 23:10:47)
转载
分类:技术交流
标签:
it
在每学年的新生开学前,班主任老师要做大量的准备工作,其中必做的一件事就是收集本班学生的报名信息,编排上课的座位表。

以往班主任老师都是通过手工来编排座位表的,消耗的时间和精力相当大,一旦有学生进行了调整又不得不重复之前的劳动。

下面我们就来看看如何用VBA轻轻松松实现座位表的编排。

通常情况下,编排座位表需要考虑以下三个因素,即学生的视力、身高、性别等,根据学生在报名表中填写的信息,我们采集了相关的数据(如图1)。

&
利用“控件工具箱”中的“命令按钮”控件在工作表中添加一个命令按钮,修改其“Caption”属性为“排座位”,双击该按钮,在其Click事件中编写下面的代码:
Private Sub CommandButton1_Click()
On Error GoTo err
Dim fenzu As Integer
Dim irow As Integer
Range("D2").Select
'对信息表进行排序,关键字分别为视力、身高、性别
#
Range("A3:E48").Sort Key1:=Range("E3"), Order1:=xlAscending,
Key2:=Range( _
"D3"), Order2:=xlAscending, Key3:=Range("C3"), Order3:=xlAscending
'删除原有的座位表
For Each sh In Worksheets
If = "座位表" Then
= False
Sheets("座位表").Delete
End If
{
Next sh
'添加名为座位表的新工作表
after:=Sheets("学生信息")
= "座位表"
'获取分组数
fenzu = InputBox("你想把学生分成几个小组", "提示", 6)
'获取学生总人数
icount = Worksheets(1).[a65536].End(xlUp).Row - 2
'
'获取每组最多学生人数
irow = Int(icount / fenzu) + 1
'按先行后列的顺序提取学生信息表中的学生名单
For n = 1 To irow
For m = 1 To fenzu
'生成第N组的文字(前面空2行用于显示标题)
Worksheets(2).Cells(3, m) = "第" & m & "组"
Worksheets(2).Cells(n + 3, m) = Worksheets(1).Cells(fenzu * (n - 1) + m + 2, 2)

Next m
Next n
MsgBox "座位表编排成功,请根据实际情况手工微调!", vbOKOnly + vbInformation, "提示"
err:
Exit Sub
End Sub
代码说明:
(1)为了使编排的座位表更加合理,我们把视力低的同学尽量往前排,相同视力的同学按身高的高矮顺序排,如果身高又相同则女生排在前面,男生排在后面。

(2)考虑到学生分班后肯定会进行一些调整,所以在生成座位表前首先会检查并删除当前工作簿中原有的“座位表”工作表。

关闭代码窗口返回Excel工作表中,单击“排座位”按钮,系统首先会创建一个名为“座位表”的工作表并询问学生的分组数(默认为“6”组),根据需要输入相应的数字,单击“确定”按钮即可看到分组后的学生名单了,然后根据需要进行适当的微调就可以了。

“讲台”可通过手工插入自选图形来实现,最终的效果如图2所示。

需要说明的是,笔者的座位表是根据自己的编排理念来设计代码的,如果在编排的顺序上要进行调整只需将代码中的三个关键字的字段(视力、身高、性别)顺序以及对应的升序(xlAscending)或降序(xlDescending)关系进行相应的调整就可以了。

相关文档
最新文档