广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

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

    来源:网络收集  点击:  时间:2024-05-02
    【导读】:
    刚学VBA的时候,曾带着“如何使用VBA生成不重复的随机数”的疑惑去求知、尝试。下面就分享一下1~33里边选出6个不重复的整数,以及1~16里边选出1个整数进行组合的方法。工具/原料more计算机Windows 7Excel 2010方法/步骤1/7分步阅读

    打开Excel表格,点击【开发工具】、【Visual Basic】打开VBA编辑器。

    2/7

    在VBA编辑器窗口点击【插入】、【模块】。

    3/7

    在“模块”的代码窗口里边输入以下VBA程序代码:

    Sub RandomNumberSelect()

    Dim i, j, k, x, rn, h, m, n

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

    Set mysheet1 = ThisWorkbook.Worksheets(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)) + 2 从第三行开始

    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 = Application.WorksheetFunction.CountIf(myrange, k)

    i,统计数值在同一行(如:A3:F3)里边出现是次数

    For Each rn In myrange 循环同一行单元格区域里边的每一个单元格

    If i = 0 And rn = Then 如果没有出现过且单元格为空白

    rn.Value = k 将数值写入该单元格里边

    j = j + 1

    Exit For 退出For循环

    End If

    Next

    x = x + 1 中间变量值递增1

    If j = 6 Or x = 200000 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

    4/7

    程序函数、思路解读:

    (1)先判断要生成的随机数组的个数是否为空白、或者非数值,条件满足再执行后边的程序,以提高运行速度;

    (2)Rnd函数的取值范围是=0,且1的随机数;

    (3)Int是取整函数;

    (4)For循坏每执行一次,将会执行一行的判断;

    (5)使用Do循环时,应当避免死循环的情况发生,所以,应当加设一个条件,以免无法求出结果时无法退出循坏。

    5/7

    回到Excel工作表界面,点击【插入】,在“形状”里边选择一个图形(如:长方形)并在Excel工作表上面绘制。

    6/7

    在绘制好的图形上边单击右键,选择“指定宏”,选择已经在模块程序里边写好的宏的名称(如:RandomNumberSelect),然后点击【确定】。

    7/7

    在指定的单元格(如:H2)里面输入要生成随机数组的个数,点击已经绘制的图形按钮(已经指定该宏),即可生成随机整数。(同一行的前6个整数不重复)

    注意事项

    个人经验,仅供参考。

    编程语言EXCEL
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_657201.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-05 05:57:00  耗时:0.025
    0.0255s