EXCEL自动随机不重复的函数,且不能等于指定数据,怎么做? 10
2020-04-17 · 知道合伙人软件行家
应该不叫抽奖号,开始还被你这“抽奖号”带到坑里去了。
开始以为是:100个人有对应的编号1~100,加上截图也已有编号对应更加证实这样的理解。要从这100个编号中抽奖若干人,其中66号和88号已先指定。按这个理解编写完公式时,发现并没有说抽奖人数为多少,再重新来看,才貌似是要把100个人随机编号,其中有两个人指定为66和88号。随机编号与抽奖应该是两个不同的概念吧。所以最终也不能确定到底要按哪个方式来理解。
下面按给98个个随机编号来处理,将题主的数据格式稍做了调整,如图,J列为姓名,K列是自然顺序号,L列给出随机编号。其中J1、J2为两个幸运儿,由老板直接给了88号和66号。剩下98人要通过随机函数来编号。
因为随机函数是一个易失性函数,为了使已取得的编号固定下来,就要用到Excel的循环引用(这里是直接引用单元格本身),所以要先在选项的公式选项卡中将“启用迭代计算”打上对勾后确定,以启用迭代计算,从而实现循环引用。这里很重要!
选择L4:L100,输入公式:
=IF(OR(L4=0,L4="",COUNTIF(L$4:L$101,L4)>1),CHOOSE(RANDBETWEEN(1,3),RANDBETWEEN(1,65),RANDBETWEEN(67,87),RANDBETWEEN(89,100)),L4)
按Ctrl+回车键,一次完成98个单元格中公式的输入。
可能要稍候一会,L列的数据不再变化时,得到不重复的结果,并把编号固定下来。因为随机函数产生的随机数是按均布来生成的,公式中,1~65占了98个数字中的绝大部分,而前面用来指定用哪个随机函数公式的范围的随机数RANDBETWEEN(1,3)生成1~3是基本均匀的。所以会反复多次才能满足COUNTIF不大于1的条件。如果数据分布更偏,且数据巨大的话,就要对公式做进一步的处理才行。
图中的L列设置了条件格式,如果有重复数据就显示填充背景,现在没有看到填充背景,那么说明没有重复数字。
增加悬赏吧,本问题公式并不复杂,但解决问题的思路应该远不止只值区区10个悬赏币,即使10叨也值啊!呵呵。