用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” 单 确定 ” ,
巧用Excel VBA随机均衡分班

以及 I N D E X语句 ,而 其 中的 I N D E X则 会影 响 C R E A T E I N —
D E X和 A L T E R I N D E X D D L命令 。不管用 户是直 接还是 间接
访 问受保 护的表 、视图还 是类似对 象 ,都 将透 明地 激活 R L S 保护策略 ,并执行注册 的 P US Q L函数 ,然后修改原来 的 S Q L
操作。
S QL >S E L E C T C OU N T ( ) T o t a l — R e c o r d s F R 0M e mp ;
T O1 _ AL RE C0RDS
1 4
S QL >C ONN s y s t e m/ ma n a g e r ;
可 见 .由函数 实现的安全 策略可 以随意更 改 .而 不需要
利用 D B MS — R L S包 重 新 注 册 。
了e n a m e = U S E R ,而另一个策 略 ( 针对 相同对象 的相 同 D M操 作 )返回了 s a l > 2 0 0 0 ,那么数据库将 自动添加这两个策略 ,从
施其安全 策略 ,从而 任何使用数据 库 中数 据的应用 程序 都可 以 自动得到安全策略的保护 。
将 在 表 、视 图或 者 类 似 的对 象 中 注册 。D B MS _ R L S并 没 有 被授 予 每一位 用户 ,管理 员需 要拥有 直接 执行该 包 的权限 。 而 A D D _ P O L I C Y则 至 少需 要 得 到策 略将 要 应 用 的对 象 的名 字 、策 略 的名 字 以 及 实 施 安全 保 护 策 略 的 P L / S Q L函数 的
通 过 调用 D B MS _ R L S . A D D — P O L I C Y 过 程 ,P L / S Q L 函 数
用VBA编排学生座位表

<用VBA编排学生座位表(2011-09-10 23:10:47)转载分类:技术交流标签:it在每学年的新生开学前,班主任老师要做大量的准备工作,其中必做的一件事就是收集本班学生的报名信息,编排上课的座位表。
以往班主任老师都是通过手工来编排座位表的,消耗的时间和精力相当大,一旦有学生进行了调整又不得不重复之前的劳动。
下面我们就来看看如何用VBA轻轻松松实现座位表的编排。
通常情况下,编排座位表需要考虑以下三个因素,即学生的视力、身高、性别等,根据学生在报名表中填写的信息,我们采集了相关的数据(如图1)。
&利用“控件工具箱”中的“命令按钮”控件在工作表中添加一个命令按钮,修改其“Caption”属性为“排座位”,双击该按钮,在其Click事件中编写下面的代码:Private Sub CommandButton1_Click()On Error GoTo errDim fenzu As IntegerDim irow As IntegerRange("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 WorksheetsIf = "座位表" Then= FalseSheets("座位表").DeleteEnd 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 irowFor 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 mNext nMsgBox "座位表编排成功,请根据实际情况手工微调!", vbOKOnly + vbInformation, "提示"err:Exit SubEnd Sub代码说明:(1)为了使编排的座位表更加合理,我们把视力低的同学尽量往前排,相同视力的同学按身高的高矮顺序排,如果身高又相同则女生排在前面,男生排在后面。
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`语句指定要排序的工作表和表格。
excel用vba排序实例

excel用vba排序实例Excel VBA排序实例:一步一步解析导语:Excel VBA是一项强大的功能,可以帮助我们自动化处理数据集。
其中之一的排序功能,可以帮助我们快速整理数据。
本文将基于Excel VBA 来讲解如何进行排序,希望能帮助读者更好地利用Excel VBA进行数据处理。
一、背景介绍在日常的数据处理工作中,当我们需要对大量数据进行整理和分析时,往往需要将数据进行排序。
Excel提供了内置的排序功能,但对于复杂的数据集来说,手动一步一步排序可能会十分繁琐,这时候Excel VBA就派上了用场。
二、准备工作在开始之前,我们需要先准备好待排序的数据集。
在本例中,我们假设有一个学生成绩表,包含学生姓名、语文成绩、数学成绩和英语成绩四个字段。
我们的目标是按照总成绩对学生进行降序排列。
三、编写VBA代码1. 打开Excel,按下"ALT + F11"组合键,打开VBA编辑器。
2. 在VBA编辑器中,选择“插入”菜单下的"模块"。
3. 在新建的模块中,编写以下代码:vbaSub SortData()Dim rng As RangeDim LastRow As Long' 定义要排序的范围Set rng = Range("A1").CurrentRegion' 计算最后一行的行数LastRow = rng.Rows.Count' 使用排序功能将数据按总成绩降序排列rng.Sort Key1:=Range("D2:D" & LastRow),Order1:=xlDescending, Header:=xlYesEnd Sub四、代码解析1. 首先,我们使用`Dim`语句声明了两个变量`rng`和`LastRow`,分别用于存储数据范围和最后一行的行数。
2. 然后,我们使用`Set`语句将`rng`定义为以"A1"单元格为起始点的当前区域。
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轻松实现座位表的编排
连瑞梅
【期刊名称】《农业网络信息》
【年(卷),期】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], 但山秀
因版权原因,仅展示原文概要,查看原文内容请购买。
利用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所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
Application.DisplayAlerts = False
Sheets("座位表").Delete
End If
Next sh
'添加名为座位表的新工作表
Sheets.Add 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)关系进行相应的调整就可以了。