Excel交流网
  • 设为首页|收藏本站|手机版
  • Excel-教程-技巧-培训视频

  • 网站首页
  • Excel教程
  • 关于我们
  • 新闻动态
  • Excel资源
  • 招贤纳士

Excel教程

Excel操作
Excel函数
Excel图表
Excel VBA
Excel 行业应用

联系方式

Excel中国 联系方式
电  话:400-855-3990
邮  编:528400
Email:support@zstm.com
网  址:www.excel-cn.com

当前位置:网站首页 > Excel教程 > Excel VBA
Excel VBA

Excel VBA快速生成5万个不重复整数

在测试程序是否正确的时候,需要填入数据检验,有时需要大量数据检测。如何自动快速生成多个不重复的随机数

下面分享一个源码。可生成50000个不重复的1~100000的随机整数

在VBA中直接使用(RND()*99999+1)即可直接生成,但是要去除重复有点麻烦,如果你有一定基础,你会想到用VBA字典的方法

详细源码:

Sub 生成不重复随机数()

    

    Dim k As Long

    Dim d As New Dictionary

    t = Timer

    Do

        k = (Rnd() * 99999 + 1) * 1

        d(k) = ""

    Loop Until d.Count = 50000

    Debug.Print Timer - t

    

End Sub

上面的代码是用VBA字典的key装入1~100000的随机数字,利用Key不能重复的特点留下非重复数值。运算速度为0.2s。


下面的方法比字典快接近10倍,只需要0.03s即可生成5万个不重复数字。

Sub 生成随机数()

    

    Dim k As Long

    Dim arr1(1 To 50000, 1 To 1), arr2(1 To 100000)

    t = Timer

    

    Do

        k = (Rnd() * 99999 + 1) * 1

        If arr2(k) = "" Then

            arr2(k) = k

            m = m + 1

            arr1(m, 1) = k

        End If

        

    Loop Until m = 50000

    Debug.Print Format(Timer - t, "0.00")  

End Sub


分析:其实这种方法和使用字典很相似,利用数组的序号不重复的特点,把生成的整数作为arr2数组的序号使用(arr2(k) = k),把第1次出现的数装到arr1数组中。为什么比字典方法快,还是昨天讲的,在循环中调用对象要比调用数值慢的多。


参考自:简美科技(头条号)


点击次数:  更新时间:2017-09-02 16:55:58  【打印此页】  【关闭】
上一条:Excel VBA拷贝特定文件到指定文件夹的方法  下一条:Excel数据透视表使用方法汇总
本站动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图|网站管理

中山市天鸣科技发展有限公司 版权所有 1999-2020 粤ICP备10043721号

广东省中山市西苑广场富贵阁 528400

QQ:4008553990 电话:0760-88315075

Excel交流网主要交流Excel教程、Excel技巧、Excel培训、Excel函数公式、Excel图表以及Excel VBA,为网友提供一个最全的Excel交流网站

Excel教程|Excel技巧|Excel培训|Excel函数公式|Excel图表|VBA

Powered by MetInfo 5.3.12 ©2008-2022  www.metinfo.cn