发布时间:2022-10-09 文章分类:Excel函数 投稿人:赵颖 字号: 默认 | | 超大 打印

有没有随机分组的函数公式 能把左边的人员随机分到右边的排班表里?

群友提了这样一个问题。

相信对这个问题感兴趣的朋友应该不少,今天就这个问题和大家聊聊解决思路。

问题说明随机分组问题的应用场景其实很多

其实这是一个随机分组的问题。

需要将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这部分,不管用其他几个函数中的哪个,这部分都少不了。