在a1输入53,在a2输入公式=SMALL(IF(COUNTIF(A$1:A1,ROW($1:$52)),52,ROW($1:$52)),ROUNDUP(RAND()*(53-ROW(A1)),))数组公式,以同时按ctrl+shift+回车三键结束,下拉复制a2 公式到a21,则a2:a21就是你要的
楼上好方法,我也提供一个:
在A1-A52中用公式生成52个随机数=RAND()
B1-B5中用公式排序,B1中输入=RANK(A1,$A$1:$A$52),一直拉到B5
B1:B5就是1-52中5个不重复的随机数字
若1-52在A2:A53,B列无数据(如有则插入一列)
用VBA:代码如下:
Sub subN()
'需要取数的个数,20可改为25或其他
n = 20
Randomize
For i = 2 To 53
Cells(i, 2) = Rnd()
Next i
Range("A2:B53").Sort Key1:=Range("B1")
'删除 B2:B53 的数
' Range("B2:B53").ClearContents
' 对择需要的数据排序
Range(Cells(2, 1), Cells(n + 1, 1)).Sort Key1:=Range("A1")
'选择需要的数据
Range(Cells(2, 1), Cells(20 + 1, 1)).Select
End Sub
A1输入:=RANDBETWEEN(1,52)
A2输入:=IF(COUNTIF($A$1:A1,A1)>1,A1+1,RANDBETWEEN(1,52))下拉。
=round(1+(50-1)*rand(),0)
把公式复制粘贴到d17,向右拖动填充柄即可。如果要避免重复,应该只能用vba解决。