使用VBA生成满足条件的三个随机数

2025-10-24 12:18:38

1、打开Excel表格后,按下键盘上面的【Alt+F11】组合键打开VBA编辑器,也可以点击【开发工具】、【Visual Basic】打开VBA编辑器。

使用VBA生成满足条件的三个随机数

使用VBA生成满足条件的三个随机数

2、在VBA编辑器的菜单栏上面点击【插入】、【模块】插入代码模块,或者依次按下【Alt】、【I】、【M】键插入代码模块。

使用VBA生成满足条件的三个随机数

3、在模块的代码框里面输入以下程序代码:

Sub RnNumber()

Dim R1, R2, R3, Ra, Rm, Ri, Ba, Bi, i

On Error Resume Next  '忽略运行过程中可能出现的错误

Set mysheet1 = ThisWorkbook.Worksheets("Sheet1")  '定义工作表Sheet1

i = 0  'i初始化为0

mysheet1.Range("A1:A3") = ""  '清空A1:A3单元格里面的内容

Do

 i = i + 1           '每执行一次循环,i递增1

 R1 = Rnd() * 1000   '生成0-1000之间的随机数

 R2 = Rnd() * 1000

 R3 = Rnd() * 1000

 Ra = Application.WorksheetFunction.Max(R1, R2, R3)    '获取随机数里面的最大值

 Rm = Application.WorksheetFunction.Median(R1, R2, R3) '获取随机数里面的中间值

 Ri = Application.WorksheetFunction.Min(R1, R2, R3)    '获取随机数里面的最小值

 Ba = (Ra - Rm) <= Rm * 0.1  '最大值与中间值之差,然后与中间值*10%比较

 Bi = (Rm - Ri) <= Rm * 0.1  '中间值与最小值之差,然后与中间值*10%比较

 If Ba = True And Bi = True Then  '如果最大值和最小值与中间值偏差不超过10%,则

  mysheet1.Cells(1, 1) = R1        '把随机数R1写入A1单元格

  mysheet1.Cells(2, 1) = R2

  mysheet1.Cells(3, 1) = R3

  Exit Do   '退出Do循环

 End If

 If i1 > 200000 Then   '如果循环次数超过200000次,则退出Do循环

  Exit Do

 End If

Loop

End Sub

使用VBA生成满足条件的三个随机数

4、输入完程序之后,点击VBA编辑器的工具栏里面的“运行”图标运行程序。

使用VBA生成满足条件的三个随机数

5、回到Excel表格界面,将会看到生成所需的随机数。

使用VBA生成满足条件的三个随机数

6、VBA程序解读:

(1)Rnd函数的随机数值范围是大于等于0且小于1,在此基础上添加一些参数就可以扩大随机的范围,以变成所需的随机数范围。

(2)在VBA程序里面,并不能直接使用Max、Median、Min来获取数值的最大值、中间值、最小值,此时只能借用Excel表格的函数功能Application.WorksheetFunction。

(3)在VBA程序里边乘以10%时,由于没法使用“%”,所以就乘以0.1,同时也可以减少VBA程序的运算量。

(4)使用Do循环时,应当尽量的避免死循环的出现(如:循环超过指定的次数则强制退出),以免Excel表格出现卡死、无响应的现象发生。

使用VBA生成满足条件的三个随机数

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢