2016 - 2024

感恩一路有你

使用VBA在Excel中生成不重复的随机数

浏览量:3080 时间:2024-06-20 18:28:59 作者:采采

随机数在数据分析和计算机编程中非常有用。但是,如果想要生成一组不重复的随机数,就需要用到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个整数不重复。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。