首先,我们需要在模板之外的空白位置填写待排课学生和待排课老师的名字。例如J1填写“小明”,J2填写“钱文华”。
然后,在框架表格中添加一行“是否可以排课”的标记。如下表所示:
整个公式采用的逻辑和固定工位的一对一排法是类似的,只需要稍加修改即可。我们需要先统计出每一列中,待排课老师出现的次数和待排课学生出现的次数,然后将这两个数字相加,只要结果≥1,那么就不能排课。
例如8:00那一列由于小白已经在上赵文清老师的课,小明就不能上赵老师的课了,那么B2位置就应该显示“不可排课”。11:00均未出现小明和赵文清老师的姓名,所以E2位置应该显示“可以排课”。
因此,我们点击B2格子,然后将下面一段公式直接粘到B2处:
=IF(COUNTIF(B3:B10000, "*"&$J$1&"*") + COUNTIF(B3:B10000, "*"&$J$2&"*") > 0, "不可排课", "可以排课")
注:J1格填写的是待排课的学生姓名,J2格填写的是待排课的老师姓名。相应的,在模板之外的任何位置都可以填写待排课的学生姓名和待排课的老师姓名,只需在公式的相应位置改成相应的形式即可。例如将待排课学生姓名小明填写在I3位置,待排课老师姓名填写在J4位置,那么在B2处需填写:
=IF(COUNTIF(B3:B10000, "*"&$I$3&"*") + COUNTIF(B3:B10000, "*"&$J$4&"*") > 0, "不可排课", "可以排课")
完成后,就会看到B2格自动出现了“不可排课”4个字。
最后将公式复制到所有的时间上,整个排课表就制作完成了。
班课排课(兼容一对一)
不同于一对一排课,班课排课一般在学期开始之前进行,所以主要考虑的因素是“教室”和“老师”的空闲时间。
但是排课的时候也不能完全避免班内学生的因素,例如:
1、某一些班级联报的情况比较多,如果放置在同一时间段,就会降低联报的比率。
2、学期中某些班级需要进行调整,调整的过程中就需要考虑班中学生的空闲时间。
3、机构主营业务既包含班课也包含1对1,在学期中就会比较频繁的排课。
第一种情况只能通过教务老师的经验进行处理,excel不能解决这类问题,但是后面这两种情况则是可以通过excel自动判断冲突的。
使用excel对小班进行排课,采用的排课框架表格和可变工位的一对一排课类似,但有所补充。一个小班的学生数目在30人左右,如果将学生姓名逐一都填写在表格中,编辑和查找都会很麻烦。
因此,模板中的每一个格子只填写一个班级的名称,并且预留一个空位显示出该班级和待排课班级是否冲突,如下表所示。
每个班级的任课老师和学生信息,我们存储在另外一张名为“班级记录”的表中。
在排课之前,需要首先将班级信息录入到“班级记录”中。第一列填写班级的名称,之后从第二列开始,每一列填写任课老师或者班内的学生姓名。如高二数学基础班,任课老师名赵文清,学生姓名分别是小明,小红和小黑。如下表所示:
这样我们就将班课的排课模板制作完成了,保存好班级信息之后,我们紧接着就需要用excel表格统计出冲突的课程。
一个很直观的想法就是,两个班如果有共同的老师或者共同的学生,那么这两个班的上课时间一定不能发生重叠。如果上课时间发生了重叠,那么就意味着这两门课就是有冲突的。另外,在模板中,每一列的课程都是在同一时间进行。因此,我们要确保每一列中的任何一个班级都不能和待排课班级冲突。
我们要编写的冲突检测公式也是按照刚刚的思路来实现,分成如下的两步流程:
第一步,检查每一个已经排好的班级是否与待排课班级存在冲突。
首先,我们要根据模板中班级的名字,在“班级记录”表格中定位这个班的老师和学生。然后,我们把老师和学生的名字进行一一对比,统计出相同的名字出现的次数。如果相同名字出现的次数≥1,就说明有班级冲突的情况发生。
我们选择格子C3,并直接录入公式:
=IFERROR(IF(SUM(COUNTIF(INDIRECT("班级记录!A"&MATCH(B3, 班级记录!$A$1:$A$100,0)&":AZ"&MATCH(B3, 班级记录!$A$1:$A$100,0)),INDIRECT("班级记录!A"&MATCH($P$1, 班级记录!$A$1:$A$100,0)&":AZ"&MATCH($P$1, 班级记录!$A$1:$A$100,0)))) > 0, "冲突","不冲突"), "")
注:
1、结束公式输入时需同时按下“CTRL+SHIFT+ENTER”。
2、该公式适用于学生数量低于50的小班情况,对于学生数量超过50的情况并不适用。
编写好公式之后,需要将公式复制到其它的框中,第一步就完成了。
第二步,检查完每一个已经排好的班级是否与待排课班级存在冲突之后,由这些信息就可以推测出哪些时间可以用来排课。某一个时间可以排课当且仅当这个时间所在的列不存在任何一个冲突。
因此,在格子B2处我们直接输入公式:
=IF(COUNTIF(C3:C10000, "冲突") > 0, "不能排课", "可以排课")
最后将公式复制到所有的时间上,整个班课的排课表就制作完成了。
排课模版功能的优化
表头固定——防止页面滚动后第一、二行以及第一列的内容消失
考虑到实际情况下,机构的老师的数目会比较多,会占用很大一部分界面,为了防止页面上下滚动后第一、二行的内容(排课情况)消失,就需要固定顶端两行。
同样的,排课的时候一般都会直接考虑一周的课表,页面左右滚动寻找排课时间的时候会导致第一列消失(老师姓名),因此,还需要将第一列固定。
我们采用的方法如下:
选中B3,然后选择“视图”-> "冻结窗格" ->"冻结拆分窗格"。
注:选中第N行第M列,则前N-1行和M-1列均被冻结。上表所示选中B3并冻结拆分窗格,则第一、二行以及A列窗格都被冻结。
模版保存——防止表格被错误篡改
Excel中的公式,在表格编辑的过程中,容易因为误操作而被更改。而且,在更改之后也比较难以发现。为此,我们需要在做好排课表模板之后,设置一个权限。对于没有权限的教务老师,只能用来排课,不能对公式进行编辑。
首先,Ctrl+A选中整个表格。点击鼠标右键,点选“设置单元格格式”并点击。
然后在弹出框中,点击“保护”。就会看到“锁定”和“隐藏”两项。
我们去掉默认的“锁定”上面的勾,再点击“确定”。
鼠标左键选中所有包含公式的表格,点击鼠标右键,选择“设置单元格格式”
在弹出框中,选择保护,再在“锁定”位置打钩,单击“确定”
点击“审阅”,选择“保护工作表”,设置一个密码。那么这时候没有密码的用户只允许编辑“未锁定的单元格”。
在机构不断发展壮大的过程中,排课管理会变得越来越复杂。如果说既要廉价又要达到一定的排课效果,往往优先选择excel进行排课。
排课管理中需要考虑的因素包括“时间”“教室”“老师”和“学生”。
全职机构的一对一排课,在excel排课管理中要强调“时间”和“老师”这两个因素;
含兼职机构的一对一排课,则因为教室数量少于老师数量,需要把“教室”当成主要因素来考虑,在excel排课管理中要强调“时间”和“教室”这两个因素;
班课机构的排课,在excel排课管理中,既要强调“时间”“教室”两种因素,同时也不能忽略“老师”和“学生”对排课的影响。
排课管理尽管很耗费精力,但是只要花一天左右的时间将模板表格制作完成并保存,之后再进行排课时,将会节省大量的时间。
文章来自【校长运营圈】