国庆值班随机安排不重复人员该怎么弄排班表

如题所述

有没有随机分组的函数公式 能把左边的人员随机分到右边的排班表里?
群友提了这样一个问题。
相信对这个问题感兴趣的朋友应该不少,今天就这个问题和大家聊聊解决思路。
问题说明随机分组问题的应用场景其实很多
其实这是一个随机分组的问题。
需要将16个人分为8组,每天两个人,连续8天。
要求随机组合,并且每个人只能出现一次。
模拟效果如下图所示。
 
实际数据远不止16个人,所以需要能够应用于批量分组的解决方案。
解决建议门槛最低最容易掌握的方法就是基础函数+辅助列
在解决问题的角度来说,能用最基础的技能解决是最好的。
对于上述问题,推荐使用辅助列解决。
需要两个辅助列,具体如下:
辅助列1:生成随机数
=RAND()
辅助列2:生成随机数的排序(不重复随机整数)
=RANK(A2,$A$2:$A$17)
 
辅助列2是比较关键的,从结果来看,相当于把原有的序号(C列)打乱重排了一次。
这是下一步生成排班表的依据。
关于不重复随机整数的生成,之前有一篇教程,有兴趣的朋友可以看看,还是比较有难度的。
【Excel公式教程】生成指定范围不重复随机整数,这个公式你看得懂么?
完成又见凌波微步
接下来要用B列,得到最终的排班表。
方法比较多,常用的几个引用函数都可以搞定,例如VLOOKUP、OFFSET、INDEX、INDIRECT等等。
以下给出一个VLOOKUP函数的公式:
=VLOOKUP(ROW(A1)*8+COLUMN(A1)-8,$B:$D,3,)
 
将这个公式右拉下拉后排班表就完成了。
按F9会刷新,但不管怎么变化,都不会出现重名的情况。
在这个公式中,关键是ROW(A1)*8+COLUMN(A1)-8这部分,不管用其他几个函数中的哪个,这部分都少不了。
温馨提示:答案为网友推荐,仅供参考
相似回答