A2单元格输入公式
=SMALL(IF(COUNTIF(A$1:A1,ROW($1:$49)),50,ROW($1:$49)),ROUNDUP(RAND()*(50-ROW(1:1)),0))
数组公式以ctrl+shift+enter三键组合结束输入
公式下拉25行
想只要10个或其他任意个数,则下拉10行即可,或其他任意行.(不要超过49行)
简单方法:
a1:a49 =rand()
b1=rank(a1,a$1:a$49),要25个就拖到b25,要10个就拖到b10
【按F9还可得到不同结果】
鼠标右键单击工作表标签,选择查看代码,输入如下代码。假设生成结果放在A列,自第一行开始放起。代码如下:
Sub 生成随机数()
Dim str As String
Dim i, x As Integer
Range("A1").EntireColumn.ClearContents
lp: str = InputBox("请输入需要不重复的个数,1——49", , 25)
If IsNumeric(str) = False Then
MsgBox "输入个数!"
GoTo lp
Else
If Int(str) <> str Or str > 49 Or str < 1 Then
MsgBox "输入范围:1-49,整数"
GoTo lp
End If
End If
x = Int((49 - 1) * Rnd() + 1)
For i = 1 To str
Do While WorksheetFunction.CountIf(Range(Cells(1, 1), Cells(i, 1)), x) > 0
x = Int((49 - 1) * Rnd() + 1)
Loop
Cells(i, 1) = x
Next
End Sub
代码输入完毕后,将宏安全性设为中,重新启动文档时,选择启用宏。需要时运行宏“生成随机数”即可。