Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2381|回复: 5

[已解决]我想在D1-D2000单元格填入2000个4位随机数

[复制链接]
发表于 2009-12-22 00:17 | 显示全部楼层 |阅读模式
如题,我想在D1-D2000单元格填入2000个4位随机数(可含字母),不重复,这个宏是怎样的,谢谢!
最佳答案
2009-12-22 15:45

Sub 随机数()
    Dim d As Object
    Dim Arr, i%, j%, strTemp$
    ReDim Arr(1 To 62)
    For i = 1 To 10
        Arr(i) = i - 1
    Next i
    For i = 11 To 36
        Arr(i) = Chr(i + 54)
    Next i
    For i = 37 To 62
        Arr(i) = Chr(i + 60)
    Next i
    Set d = CreateObject("Scripting.Dictionary")
    Do While d.Count < 2000
        Randomize
        strTemp = Arr(Int(Rnd * 62 + 1)) & Arr(Int(Rnd * 62 + 1)) & Arr(Int(Rnd * 62 + 1)) & Arr(Int(Rnd * 62 + 1))
        d(strTemp) = 1
    Loop
    [d1].Resize(2000, 1) = Application.Transpose(d.keys)
End Sub
发表于 2009-12-22 04:17 | 显示全部楼层
回复

使用道具 举报

发表于 2009-12-22 04:22 | 显示全部楼层

不重复有2个含义:如不出现AA12,就是同一字符串中没有2个A。还有就是2000个字符串没有雷同的,请楼主表达清楚,以便楼下完成[em01][em01][em01][em01]
回复

使用道具 举报

 楼主| 发表于 2009-12-22 14:49 | 显示全部楼层

我顶顶!
回复

使用道具 举报

发表于 2009-12-22 15:45 | 显示全部楼层    本楼为最佳答案   


Sub 随机数()
    Dim d As Object
    Dim Arr, i%, j%, strTemp$
    ReDim Arr(1 To 62)
    For i = 1 To 10
        Arr(i) = i - 1
    Next i
    For i = 11 To 36
        Arr(i) = Chr(i + 54)
    Next i
    For i = 37 To 62
        Arr(i) = Chr(i + 60)
    Next i
    Set d = CreateObject("Scripting.Dictionary")
    Do While d.Count < 2000
        Randomize
        strTemp = Arr(Int(Rnd * 62 + 1)) & Arr(Int(Rnd * 62 + 1)) & Arr(Int(Rnd * 62 + 1)) & Arr(Int(Rnd * 62 + 1))
        d(strTemp) = 1
    Loop
    [d1].Resize(2000, 1) = Application.Transpose(d.keys)
End Sub
回复

使用道具 举报

发表于 2010-1-8 20:02 | 显示全部楼层

 好东东

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-1 15:16 , Processed in 0.245899 second(s), 5 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表