今天阿汤又要来解答网友的问题了,给我的这个题目倒是有点难度,问题是这样的:我想要将人员平均分配组别,且用随机的方式来做。其实看起来好像很简单,但其实颇难的,如果单纯只是「随机」分配很简单,但如果同时要兼顾「平均」有点难度,阿汤思维了几种做法后,想了一个尽可能简单的做法给大家参考,用到的函数也都是常见且易用的,以便大家能够理解,往下来看怎么做吧。

透过 Excel 随机平均分配组别

先给大家看一下要做的东西长这样,假设人员有 A 到 O 共 15 位,我想要将他们平均分配到甲、乙、丙三个组别里,等于每组是 5 人的话要怎么做。

阿汤本来想用一行函数来全部搞定,但怕大家无法理解内容(很复杂),所以改用辅助的方式来做。

右边的 E 列先打入组别及名称,这边我以甲乙丙来示范。

F 行是辅助用的随机码,这一列长度会和人员长度一样,函式使用的是 RAND,直接在 F2 输入

=RAND()

Excel 小教室 – 如何随机且「平均」分配项目,比如人员分组




然后在 F2 将函数往下延伸,也就是 F2 到 F16 都是 RAND()。

接下来比较复杂的公式来了,我们在 C2 那栏输入以下公式:

=INDIRECT("E"&((MOD(RANK(F2,$F$2:$F$16),3)+1)+1))

然后一样从 C2 延伸公式到 C16(就是滑鼠移到 C2 栏位右下角会出现十字,按住后往下拖曳到 C16 即可)。

接下来说明一下公式,我们先讲一下最里面的 RANK 这一段

=RANK(F2,$F$2:$F$16)

这是将 F2~F16 排名出来 1~15 名,所以单纯打这一段会出现 1~15 的数字(大家可以试试)。

然后再透过 MOD 这个函数来处理排名

=MOD(RANK(F2,$F$2:$F$16),3)+1

如果是打这一段,你会发现会显示的就是 1~3 的数字,如果你的组别是有五个,那其中那个 3 就改成 5 就可以。

MOD 这是用来显示余数使用的,详细用法可以参考 OFFICE 网站,透过这个函数会以 1~15 来说,除以 3 后会得到的余数会是 0~2,所以在公式的尾数多一个 +1 来补成 1~3。

如果你不需要甲、乙、丙的组别名称的话,其实到这个步骤就搞定了,就已经区分出 1~3 的随机平均分配。

Excel 小教室 – 如何随机且「平均」分配项目,比如人员分组

最后如果你想要直接将 E 列的甲、乙、丙直接带入的话,最终公式就是长这样

=INDIRECT("E"&((MOD(RANK(F2,$F$2:$F$16),3)+1)+1))

或者

=INDIRECT("E"&(MOD(RANK(F2,$F$2:$F$16),3)+2))

INDIRECT 这个公式是用来显示栏位值,比如 INDIRECT(E2),那就会显示 E2 的值,也就是甲,我们刚刚 C 列做到 MOD 为止是显示 1~3,但我们要指向的内容是 E2~E4,所以在公式尾把多加了个 1,或者将里面的 +1 改成 +2 都可以,这样就会显示 E 列的组别名称了。

如果你想要验证每个组别的人数是否有平均的话,可以用 COUNTIF 这个函数来做,这部份阿汤就不特别解说了,COUNTIF 是非常简易使用的一个函数。

最后完整的含验证就长这样了。

Excel 小教室 – 如何随机且「平均」分配项目,比如人员分组

如果你要分配的量是 15,但要分到四组,会无法整除也可以用吗?是的,也可以,会像这样,某一组别少一个人。

由于阿汤是用 RAND 这个函数来做随机取数,所以当你随便输入一格后,排列都会重新来过,因此,分完组别后要固定下来的话,可以在组别的项目复製起来。

然后在组别的第一栏位右键「选择性贴上」。

Excel 小教室 – 如何随机且「平均」分配项目,比如人员分组

选择值按下确定。

Excel 小教室 – 如何随机且「平均」分配项目,比如人员分组

这样就会覆盖原本的公式,变成单纯的文字,就不会再变动了,后面的 DEF 列也都可以清空了。

文末说明一下为什么要用 RAND() 来做随机码排列,因为 RAND() 产生的随机值重复机率非常非常的低,当然如果你的样本有 1 万组的话,那可能有一点点的机会重复,但原则上很难,会用这方式来做的原因是,如果你是要随机且不重复产生 1~15 的数字,公式其实也不是简单就搞定,不如就用 RAND(),反正有加入 COUNTIF 验证每组人数是否平均就好了,不用那么麻烦。

提供给大家这篇文章的范例檔:请点我下载