如何随机生成一组数字,这个问题不难解答,但生成的数字不能重复,那就容易出现问题,尤其是在指定的数字区间范围内。
那么今天我们就讲讲这个场景的干货内容,其逻辑可能会看起来混乱,但实际是比较清楚的。
我们还是直接进入正题吧!
某个企业新入职多位员工,由于是同一批招进来的,现在需要给这些员工随机分配30-67之间不重复的员工编码。

那么这个案例的思路和方法有哪些呢?
rand和randbetween它们前者是随机取值0-1之间的数字,后者则是取值指定最小和最大值之间的数字。
我们使用randbetween函数来看看它的公式:
=RANDBETWEEN(30,67)

根据设定,要取值30-67之间的数字,可以理解为最小值30,最大值67,那么在randbetween函数公式中的表达,如上面公式所示,直接套入最小值和最大值参数。
而从公式结果来看,确实也得到了不同数字的结果。
那么randbetween函数是不是就可以解决我们提出的问题呢!?
其实不然!
randbetween函数并没有内置不重复取值的规则,因此当它的参数区间非常小时,比如0-9之间,就很容易出现重复的数字。
=randbetween(0,9)

那么如何避免公式结果重复呢?
由于目前在excel各版本中还未出现能够直接提取不重复数字的函数,因此我们还是要在两个随机函数上下功夫。
仍然以randbetween函数为例,我们输入一个随机引用数值的表达式:
*100

这个公式中randbetween函数嵌套了一个行序号引用函数row,而且row函数的参数是一个数组,且添加了0次幂。
首先0次幂是一个数学知识,它的结果是1,而row函数引用一个行区域,得到的结果则是一个数组,其结果包含30-67之间的所有数字。
购买专栏解锁剩余63%