网上有一公式可以随机生成0-9的不重复数字,如下:
=SMALL(IF(COUNTIF($D11:D11,{0;1;2;3;4;5;6;7;8;9})=0,{0;1;2;3;4;5;6;7;8;9}),INT(RAND()*(10-COLUMN(A1))) 1)
但仔细观察,此公式存在弊端,见下面gif图演示:
就是最后一个数字必定是9。
为此,现在用其他思路来实现这个目标。
首先介绍一个自定义函数:newtext
该函数并非本人所写,而是ehome上某版主N年前所写。
作用是批量删除某个字符串中的多个字符。
第一个数字的函数公式为:=INT(RAND()*10)
第二个数字起函数公式为:
=MID(newtext("0123456789",$E$10:E10),INT(RAND()*(10-COLUMN(A1))) 1,1)
其中newtext函数是将出现过的数字从字符串"0123456789"中删除,如下图中删除第一个数字8.
删除数字之后再用mid函数随机提取数字,然后第三个数字则像第二个数字这样处理,字符串"0123456789"随机删除两个数字,剩下8个,然后在这8个数字中随机挑一个出来。
其他数字亦然。
结果见下面的gif演示: