在试验工作中,我们有时会需要随机取样,而且还要保证取样之中不会有重复的现象。我们可以通过Excel的功能得以实现,方法很多种,例如可以通过写VBA,或者函数公式。Qx3检测VBA
这里我介绍一种简单实用也非常常见的方法,一共就两个函数,RAND和RANK。RAND函数用来形成随机数列,再用RANK函数进行排序,原理比较简单,RAND函数会生成0-1之间的随机数,随机数数字最多是可以有15位小数点的,也就是说,你生成的这列随机数出现相同数字的概率基本为零,一定会有大小之分,再用RANK函数排序,假如你这个数列10个随机数,你就可以得到一个1-10之间随机变换不重复的数列。Qx3检测VBA
例如:我们在A1单元格输入=RAND(),下拉至A10单元格,在B1单元格输入=RANK(A1,$A$1:$A$10),下拉拖动公式。这里的$A$1:$A$10需要加上绝对引用符号,选中后按键盘上的F4键。这里也可以将RANK函数的第二个参数设成A:A,就是A列,RANK函数会忽略A列的空单元格,需要注意的是第二个参数设成A:A的时候,不要误操作在A列空白处输入内容,这样会导致公式出错。Qx3检测VBA
再介绍一下稍微复杂一点的应用Qx3检测VBA
1、随机数不是从1开始的,只需要在随机数公式前面再加一个数字。假设从20开始的,公式是=RANK(A1,$A$1:$A$10)+20Qx3检测VBA
2、再或者你为了好区分,需要在数字前面加字母,假设我前面需要加字母A,公式是这样的:="A"&RANK(A1,$A$1:$A$10)。&是连接符,就是你键盘上面数字的7上面的字符,输入的时候加按shift键就行了。Qx3检测VBA
3、还有一种情况,你所需要生成的随机数是不连续的,例如这样一列数字:1、3、5、6、10、11、12、15、16、20.虽然也是10个数,但是不连贯,我们之前生成的数字都是连贯的,前面的公式好像不好用了。其实有一个非常简单的办法就能搞定,跟前面一样,先生成随机数列,再排序,你数列的长度要和前面这些不连贯的数列一样长。然后在排序列后用INDEX函数.下图:Qx3检测VBA
公式是这样的,D1单元格输入:=INDEX($C$1:$C$10,B1)。下拉公式。公式的原理是这样的,排序函数第一个数值是10,INDEX函数就会返回原始数据数列中第10个数,同理第一个数值是6,INDEX函数就会返回原始数据数列中第6个数.这里的原始数据可以是文本等其他形式。Qx3检测VBA |