今天在公司群里看到一个通知:公司接上级通知,需要安排人员在60天内轮流抽做核酸检测,所有人都必须参与。
于是这个通知便成了作者君的excel解题题材……
言归正传,如何通过excel来随机抽取人名,且出现过的人名在后续抽取中不再重复出现,接下来就进入操作步骤。
在上图中,已知公司员工姓名,后续将通过一系列操作随机抽取不重复的人员去参加核检。
首先我们在姓名列后方添加一个辅助列,并输入公式:=RAND()
rand函数是一个随机函数,函数括号内没有任何数据,但会返回0-1之间的随机数字。
我们双击向下填充公式,得到的结果是拥有小数点后好几位数的数字。
这些数字几乎不会重复,因为0-1之间的数字范围太广泛了。而有了不会重复的数字区域后,便可以通过一个公式来进行随机抽取。
在姓名列下方,输入公式:=INDEX($A$2:$A$69,RANK($B2,$B$2:$B$69))
这个公式有两个函数,一个是index函数,一个是rank函数。
index函数是引用函数,表达式为:=index(引用区域,第几行,第几列),根据设置的指定行和列数,来返回在引用区域中对应位置的单元格内容。如果省略第二或第三个参数则表示不引用行或列。
rank函数的作用是进行排名,表达式为:=rank(值,区域,升序或降序),第三个参数升序或降序是通过0或1的设置来完成,如果省略,则默认降序。 它的结果是一个大于1的整数。
知道rank函数的作用,我们再回到之前的rand函数,通过rand函数随机出来的数值,再对它们进行排名,便得到从小到大的排名,因为rand函数的值都是不重复的,因此排名也不会重复。
随后我们再使用index函数来返回引用区域中的人名。在这个公式中,=INDEX($A$2:$A$69,RANK($B2,$B$2:$B$69)), index函数省略了第三个参数,即只查询返回指定行的位置。
根据rank函数得到的不重复的结果值,如结果是13,便会查询$A$2:$A$69单元格区域中第13行的单元格,并引用该单元格数据。
我们向下填充公式,可以看到结果中没有出现任何重复的人名。
但大家也可以看出,这张截图中的姓名结果与上面图片中的并不一致,虽然人名也不重复。
这是因为rand函数会在更新数据时刷新,为了使数据或结果固定下来,我们需要在编码列填充完rand公式后,复制该列数据后直接进行粘贴,并点击右下方的ctrl图标,选择下图箭头所指的选项,即“粘贴为值”选项,使公式转换为数值。
以上就是excel随机抽取不重复人名的操作方法,思路是很清晰的,首先给人名设置一个不重复且可比较大小的数字,然后通过对数字大小的排名来一一对应不同位置的人名,最后通过引用函数将人名引用过来。