怎样从excel一列中不重复地随机提取数据
- 2022-07-17
- 来源/作者: Wps Office教程网/ 菜鸟图库
- 287 次浏览
有时需要在Excel中从某列随机提取一些数据,而且数据不能被重复提取。例如在进行随机抽样时,就需要进行随机地、不重复地提取操作。在Excel中,可以用多种方法实现从一列中随机不重复地提取数据,下面介绍其中的一些方法。假如要从A1:A100区域中随机挑出一些名单:
方法一:RAND函数+排序
1.在B1单元格中输入公式:
=RAND()
回车后向下填充到B2:B100区域。
2.按照B列进行排序。方法是选择B1:B100区域中的任意单元格,单击工具栏中的排序按钮“A→Z”,A列中的名单就会变成随机排列了,并且每次单击排序按钮都会产生一个新的随机序列。从A列中复制一些名单到其他区域即可。
方法二:RAND+RANK函数
先用上述方法在B1:B100区域填充RAND函数,然后在C1单元格中输入公式:
=INDEX($A$1:$A$100,RANK(B1,$B$1:$B$100))
再拖到填充柄向下填充,即可获得所需的随机数据。如果要获得新的随机数据,按F9键即可。这个方法适合于不改变工作表结构的情况。
方法三:VBA代码
还可以用下面的VBA代码来进行随机不重复地提取。假如要从某列(本例为A1:A1000)中随机不重复地提取100个数据,将其放到指定区域(本例为C1:C100)中:
Sub RandomSelect()
Dim TempArr, TheList(1 To 1000, 1 To 1) As Variant
TempArr = Range("a1:a1000")
For i = 1000 To 1 Step -1
j = Int(Rnd * i) + 1
TheList(i, 1) = TempArr(j, 1)
TempArr(j, 1) = TempArr(i, 1)
Next i
Range("c1:c100") = TheList
End Sub
上述代码中读取和写入数据时没有用For-Next循环,速度较快,特别适合于数据量较大的情况