来自学员提问:有量非常大的一列数据,如何尽量平均且随机地分配给若干个人?
案例:将下图 1 中 A 列的行数尽量平均分配给 E 列的 5 个人,效果如下图 2 所示。
解决方案 1:1. 将 E 列的姓名复制到 B 列。
2. 向下拖动复制过来的姓名区域。
上述两步甚至可以合并成一步:复制 E 列的姓名 --> 选中 B 列需要填充的所有空白单元格 --> 粘贴。
解决方案 2:如果想让姓名的排列更随机,可以用这种方法。
1. 在 C 列输入递增的序列号。
2. 选中 A 列的任意单元格 --> 选择菜单栏的“数据”-->“升序”
3. 将 E 列的姓名复制到 B 列 --> 向下拖动复制姓名区域
4. 选中 C 列的任意单元格 --> 选择菜单栏的“数据”-->“升序”
5. 删除辅助列。
解决方案 3:1. 在 C2 单元格中输入以下公式 --> 下拉复制公式:
=RAND()
2. 在 D2 的单元格中输入以下公式 --> 下拉复制公式:
=MIN(5,ROUNDUP(RANK(C2,$C$2:$C$28,0)/5,0))
公式释义:
RANK(C2,$C$2:$C$28,0):计算 C2 在区域 $C$2:$C$28 中的降序排名;
ROUNDUP(.../5,0):将上述结果除以 5,并向上取整,保留 0 位小数;目的是将 A 列的单元格尽量随机分成 5 份;
MIN(5,...):
将 5 与上述结果相比较,取出其中较小的那个数;
因为 A 列中的单元格数不是正好是 5 的倍数,超过的部分,取整后会大于 5,那就没法分配姓名了,所以当大于 5 的时候,就设置为 5;
3. 在 B2 单元格中输入以下公式 --> 下拉复制公式:
=INDEX($E$2:$E$6,D2)
公式释义:
提取出区域 $E$2:$E$6 中排名第 D2 位的值
4. 将 B 列复制粘贴为值,删除所有辅助列。