使用VBA在Excel中生成不重复的随机数
随机数在数据分析和计算机编程中非常有用。但是,如果想要生成一组不重复的随机数,就需要用到VBA编程语言了。如果你刚开始学习VBA,那么本文将为你介绍如何使用VBA在Excel中生成不重复的随机数。
步骤1:打开VBA编辑器
首先,打开Excel表格,并点击【开发工具】、【Visual Basic】打开VBA编辑器。
步骤2:新建模块
在VBA编辑器窗口,点击【插入】、【模块】,以便输入程序代码。
步骤3:输入程序代码
在“模块”的代码窗口里边输入以下VBA程序代码:
Sub RandomNumberSelect()
Dim i, j, k, x, rn, h, m, n
On Error Resume Next '忽略运行过程中可能出现的错误
Set mysheet1 ("Sheet1") '定义工作表
mysheet1.Range("A3:G100").Value "" '清空单元格内容
n IsNumeric(mysheet1.Cells(2, 8)) '判断填充的内容是否为数值
If mysheet1.Cells(2, 8) <> "" And n True And mysheet1.Cells(2, 8) > 1 Then '如果要生成的随机数个数的单元格不为空白,且为数值(数值>1),则:
h Int(mysheet1.Cells(2, 8)) '从第三行开始
For m 3 To h
Set myrange mysheet1.Range(mysheet1.Cells(m, 1), mysheet1.Cells(m, 6))
x 0 '初始值为0
j 0
Do
k Int(Rnd * 33 1) '1-33的随机整数
i (myrange, k) '统计数值在同一行(如:A3:F3)里边出现是次数
For Each rn In myrange '循环同一行单元格区域里边的每一个单元格
If i 0 And rn "" Then '如果没有出现过且单元格为空白
k '将数值写入该单元格里边
j j 1
Exit For '退出For循环
End If
Next
x x 1 '中间变量值递增1
If j 6 Or x 20000 Then '如果数值已经填充到第六列,或x条件满足
mysheet1.Cells(m, 7).Value Int(Rnd * 16 1) '从1-16里边随机选择出1个整数
Exit Do '退出Do循环
End If
Loop
Next
End If
End Sub
以上程序函数和思路解读:
(1)先判断要生成的随机数组的个数是否为空白、或者非数值,条件满足再执行后边的程序,以提高运行速度;
(2)Rnd函数的取值范围是>0,且<1的随机数;
(3)Int是取整函数;
(4)For循坏每执行一次,将会执行一行的判断;
(5)使用Do循环时,应当避免死循环的情况发生,所以,应当加设一个条件,以免无法求出结果时无法退出循坏。
步骤4:指定宏
回到Excel工作表界面,点击【插入】,在“形状”里边选择一个图形(如:长方形)并在Excel工作表上面绘制。在绘制好的图形上边单击右键,选择“指定宏”,选择已经在模块程序里边写好的宏的名称(如:RandomNumberSelect),然后点击【确定】。
步骤5:输入参数并生成随机数
在指定的单元格(如:H2)里面输入要生成随机数组的个数,点击已经绘制的图形按钮(已经指定该宏),即可生成随机整数。注意,同一行的前6个整数不重复。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。