首页 > 软件开发 > 编程语言 >

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

来源:互联网 2023-03-17 00:22:48 507

曾经看到这样的一个问题,在Excel表格上面生成三个随机数且最大值、最小值与中间值偏差不超过10%。LMw办公区 - 实用经验教程分享!

乍看这个问题的时候,觉得可以使用RAND或RANDBETWEEN函数来处理,但细想起来,怎么能保证每次生成最大值和最小值与中间值的偏差不超过10%,且都需要人工判断,这样似乎是人为的去选择数值,比较麻烦。想来想去,还是觉得使用VBA程序来处理比较合适。LMw办公区 - 实用经验教程分享!

使用VBA生成满足条件的三个随机数LMw办公区 - 实用经验教程分享!

工具/原料

  • 计算机
  • Excel 2010

方法/步骤

  • 1

    打开Excel表格后,按下键盘上面的【Alt F11】组合键打开VBA编辑器,也可以点击【开发工具】、【Visual Basic】打开VBA编辑器。LMw办公区 - 实用经验教程分享!

    使用VBA生成满足条件的三个随机数LMw办公区 - 实用经验教程分享!

    使用VBA生成满足条件的三个随机数LMw办公区 - 实用经验教程分享!

  • 2

    在VBA编辑器的菜单栏上面点击【插入】、【模块】插入代码模块,或者依次按下【Alt】、【I】、【M】键插入代码模块。LMw办公区 - 实用经验教程分享!

    使用VBA生成满足条件的三个随机数LMw办公区 - 实用经验教程分享!

  • 2相关内容非法爬取自百度经验
  • 3

    在模块的代码框里面输入以下程序代码:LMw办公区 - 实用经验教程分享!

    Sub RnNumber()LMw办公区 - 实用经验教程分享!

    Dim R1, R2, R3, Ra, Rm, Ri, Ba, Bi, iLMw办公区 - 实用经验教程分享!

    LMw办公区 - 实用经验教程分享!

    On Error Resume Next '忽略运行过程中可能出现的错误LMw办公区 - 实用经验教程分享!

    Set mysheet1 = ThisWorkbook.Worksheets("Sheet1") '定义工作表Sheet1LMw办公区 - 实用经验教程分享!

    i = 0 'i初始化为0LMw办公区 - 实用经验教程分享!

    mysheet1.Range("A1:A3") = "" '清空A1:A3单元格里面的内容LMw办公区 - 实用经验教程分享!

    LMw办公区 - 实用经验教程分享!

    DoLMw办公区 - 实用经验教程分享!

    i = i 1 '每执行一次循环,i递增1LMw办公区 - 实用经验教程分享!

    R1 = Rnd() * 1000 '生成0-1000之间的随机数LMw办公区 - 实用经验教程分享!

    R2 = Rnd() * 1000LMw办公区 - 实用经验教程分享!

    R3 = Rnd() * 1000LMw办公区 - 实用经验教程分享!

    Ra = Application.WorksheetFunction.Max(R1, R2, R3) '获取随机数里面的最大值LMw办公区 - 实用经验教程分享!

    Rm = Application.WorksheetFunction.Median(R1, R2, R3) '获取随机数里面的中间值LMw办公区 - 实用经验教程分享!

    Ri = Application.WorksheetFunction.Min(R1, R2, R3) '获取随机数里面的最小值LMw办公区 - 实用经验教程分享!

    Ba = (Ra - Rm) = Rm * 0.1 '最大值与中间值之差,然后与中间值*10%比较LMw办公区 - 实用经验教程分享!

    Bi = (Rm - Ri) = Rm * 0.1 '中间值与最小值之差,然后与中间值*10%比较LMw办公区 - 实用经验教程分享!

    LMw办公区 - 实用经验教程分享!

    If Ba = True And Bi = True Then '如果最大值和最小值与中间值偏差不超过10%,则LMw办公区 - 实用经验教程分享!

    mysheet1.Cells(1, 1) = R1 '把随机数R1写入A1单元格LMw办公区 - 实用经验教程分享!

    mysheet1.Cells(2, 1) = R2LMw办公区 - 实用经验教程分享!

    mysheet1.Cells(3, 1) = R3LMw办公区 - 实用经验教程分享!

    Exit Do '退出Do循环LMw办公区 - 实用经验教程分享!

    End IfLMw办公区 - 实用经验教程分享!

    LMw办公区 - 实用经验教程分享!

    If i1 > 200000 Then '如果循环次数超过200000次,则退出Do循环LMw办公区 - 实用经验教程分享!

    Exit DoLMw办公区 - 实用经验教程分享!

    End IfLMw办公区 - 实用经验教程分享!

    LoopLMw办公区 - 实用经验教程分享!

    LMw办公区 - 实用经验教程分享!

    End SubLMw办公区 - 实用经验教程分享!

    使用VBA生成满足条件的三个随机数LMw办公区 - 实用经验教程分享!

  • 4

    输入完程序之后,点击VBA编辑器的工具栏里面的“运行”图标运行程序。LMw办公区 - 实用经验教程分享!

    使用VBA生成满足条件的三个随机数LMw办公区 - 实用经验教程分享!

  • 5

    回到Excel表格界面,将会看到生成所需的随机数。LMw办公区 - 实用经验教程分享!

    使用VBA生成满足条件的三个随机数LMw办公区 - 实用经验教程分享!

  • 6

    VBA程序解读:LMw办公区 - 实用经验教程分享!

    (1)Rnd函数的随机数值范围是大于等于0且小于1,在此基础上添加一些参数就可以扩大随机的范围,以变成所需的随机数范围。LMw办公区 - 实用经验教程分享!

    (2)在VBA程序里面,并不能直接使用Max、Median、Min来获取数值的最大值、中间值、最小值,此时只能借用Excel表格的函数功能Application.WorksheetFunction。LMw办公区 - 实用经验教程分享!

    (3)在VBA程序里边乘以10%时,由于没法使用“%”,所以就乘以0.1,同时也可以减少VBA程序的运算量。LMw办公区 - 实用经验教程分享!

    (4)使用Do循环时,应当尽量的避免死循环的出现(如:循环超过指定的次数则强制退出),以免Excel表格出现卡死、无响应的现象发生。LMw办公区 - 实用经验教程分享!

    使用VBA生成满足条件的三个随机数LMw办公区 - 实用经验教程分享!

  • 注意事项

    • 个人经验,仅供参考。

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!LMw办公区 - 实用经验教程分享!


    标签: 编程语言VBAexcel

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码