Excel智能编排学生座位
数字办公
适合人群:中小学教师 操作难度:★★★★
在每学期,班主任老师都要做大量的工作,其中必做的一件事就是收集本班学生的报名信息,编排上课的座位表。以往班主任老师都是通过手工来编排座位表的,消耗的时间和精力相当大,一旦调整了学生座位又不得不重复劳动。下面我们就来看看如何用VBA轻轻松松实现座位表的编排。
通常情况下,编排座位表需要考虑以下三个因素,即学生的视力、身高、性别等,根据学生在报名表中填写的信息,我们采集了相关的数据(图1)。

利用“控件工具箱”中的“命令按钮”控件在工作表中添加一个命令按钮,修改 “Caption”属性为“排座位”,双击该按钮,在其Click事件中编写代码。
注:以下为核心代码,完整代码可在Http://www.cpcw.com/bzsoft下载。
'对信息表进行排序,关键字分别为视力(E栏)、身高(D栏)、性别(C栏)
Range("A3:E48").Sort Key1:=Range("E3"), Order1:=xlAscending, Key2:=Range( _"D3"), Order2:=xlAscending, Key3:=Range("C3"), Order3:=xlAscending
'获取分组数
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
代码说明:
为了使编排的座位表更加合理,我们把视力低的同学尽量往前排,相同视力的同学按身高的高矮顺序排,如果身高相同则女生排在前面,男生排在后面。
关闭代码窗口返回Excel工作表中,单击“排座位”按钮,系统首先会创建一个名为“座位表”的工作表并询问学生的分组数(默认为“6”组),根据需要输入相应的数字,单击“确定”按钮即可看到分组后的学生名单了,然后根据需要进行适当的微调就可以了。“讲台”可通过手工插入自选图形来实现,最终的效果如图2所示。

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