某天湖北武汉的廖老师求助小编,希望在EXCEL中实现随机安排监考老师;
源数据表长这样,一共有近300场次需要安排:
图 1:源数据
可供监考的教师却只有50多人:
图 2:监考老师表
廖老师还提出了3个限定条件:
1-每位监考老师尽量平均安排;
2-任课老师不能担任主监考;
3-同一考试时间时段只能出现1次。
对于小编这种技术菜鸟而言,没用过高深的系统,能不能就在EXCEL中实现随机排考呢?
答案肯定是YES!
小编根据自己的技术能力进行了仔细分析,打算按照以下步骤进行破解难题:
1-用randbetween函数随机生成每位老师监考场次数;
2-用lookup函数生成全体监考老师名单,即根据上一步生成列表;
3-用rand函数和rank函数对全体监考老师进行随机排序;
3-用lookup函数提取与考场顺序号一致的监考老师姓名;
4-用if函数验证重复排考和任课教师规则。
用思维导图的形式就是这样描述:
图 3:解题思路示意图
步骤1-随机生成教师监考场次数
今天的小栗子中共有288场次,可监考的老师却只有53人,简单相除得到人均监考场次数是5.5,咱们用randbetween函数随机生成即可,公式这样写:
=Randbetween(5,6)
下拉生成列表后查验以下合计数是否等于288,选择性粘贴数值到辅助列:
图 4:随机生成监考场次数
小编提示:随机数不一定能正好生成总的考试场次数,您可以多刷几次或粘贴后人工干预。
建议将文档的公式计算方式更改为人工计算,否则会每次点击随机函数单元格都会重新计算。设置方法是依次在EXCEL选项中的计算
图 5:设置公式计算方式路径示意图
步骤2-随机生成监考老师列表
接下来咱们要根据每名老师的监考场次数生成监考老师列表,换算成大白话就是对老师姓名列按指定数据重复生成新的一列数据;
首先咱们在A列输入公式“=D2+A1”,向下填充;在E2单元格输入公式“=IFERROR(VLOOKUP(ROW(A1),A:B,2,0),E3)&”””,向下填充至出现空白数据为止(实际得到288行数据):
图 6:获取监考教师列表
接下来咱们为每一名参与监考的老师进行随机编号,采用rand函数生成随机数后再进行排序;公式分别写成
=RAND()*100000
=RANK(G2,$G$2:$G$289)
图 7:生成监考老师随机序号
步骤3-提取监考老师姓名
接下来的工作就轻松了,咱们用LOOK函数在监考表中提取对应序号的教师姓名即可,公式这样写:
=LOOKUP(1,0/(Sheet1!$H$2:$H$289=H33),Sheet1!$E$2:$E$289)
图 8:提取和验证
步骤4-验证重复排考和监考老师规则
刚才的截图中您看到了验证过程,为了保证监考老师不参与监考、同一位老师同一时间段只监考一个考场规则,咱们用IF函数来进行验证:
=IF(D33=G33,”任课教师不能监考”,””)
=IF(AND(B33=B32,G33=G32),”监考老师分身乏术”,””)
即使是随机排序,也难保会有翻车的时候,这时候就需要您进行人工干预了:
图 9:需人工干预的数据
最后会动的图提示您如何使用这一系列函数来实现随机排监考老师吧:
小编划重点:根据经验,如果出现要干预的数据太多,您最好多刷新重新生成随机序号,最后看看咱们的随机排监考老师的成果,是不是很有成就感?