今天这篇文章来看一个问题:

这是遇到的一个实际求助案例,今天我们来分析一下如何实现这个需求。
分析思路:
首先我可以随机给盒号进行排序,序号就是随机的1-60,然后给右边编写固定序号,按照序号,把盒号分配到右边,由于盒号的序号是随机排序的,所以就做到了随机也不重复分配的效果。
操作步骤
首先给右边生成这样的序号,每个序号代表分配到排名这个序号的盒号,这里我是手动输入的这个,接下来我们看如何用函数实现这个序号。

输入公式=SUM($G$2:$G2)+COLUMN(A1)
右拉下拉全部填充,观察数据发现,有的行会有多余的数字;

如上图,第三行的17和18应该是空,观察发现,只要加一个判断,也就是这个数字是否大于前面那三个数字即可。
所以对公式进行改进:
=IF(SUM($G$2:$G2)+COLUMN(A1)>SUM($G$2:$G3),"",SUM($G$2:$G2)+COLUMN(A1))

这里改进的公式还有其他简便写法,我选择了最容易理解的,其他的写法可以自己思考下。
接下来给盒号随机排序
如下动图,添加辅助列,=rand(),随机生成60个随机数,然后对这个随机数进行排名,就得到随机不重复的序号了。

最后一步,借助vlookup,完成需求
公式如下,用vlookup,去查找序号所对应的盒号。
=IFERROR(VLOOKUP(IF(SUM($G$2:$G2)+COLUMN(A1)>SUM($G$2:$G3),"",SUM($G$2:$G2)+COLUMN(A1)),$A$3:$B$61,2,0),"")

今天的这个分析思路,借助rand和rank函数,生成随机序列,达到随机不重复分配的效果,学到了吗?