vba不重复随机数案例一:
下面的代码,将在A1:A5000单元格产生1-5000的不重复随机整数。
PrivateSubvba不重复随机数()
DimArr1(1To5000)AsBoolean
DimArr2(1To5000,0)AsInteger
t=Timer
[A:A]=Empty
Fori=1To5000
num=Int(5000*Rnd+1)
DoWhileArr1(num)
num=Int(5000*Rnd+1)
Loop
Arr1(num)=True
Arr2(i,0)=num
Nexti
[A1:A5000]=Arr2
EndSub
vba不重复随机数案例二:
在A1:A100中产生1-100的不重复随机整数,代码如下:
Subvba不重复随机数()
DimTempArr1(99)AsInteger,TempArr2(0To99,1To1)AsInteger
DimRndNumberAsInteger,iAsInteger
Randomize(Timer) '初始化随机数生成器
Fori=0To99 '产生包含1-100的不重复的随机数列
TempArr1(i)=i
Nexti
Fori=99To0Step-1
RndNumber=Int(i*Rnd)
TempArr2(99-i,1)=TempArr1(RndNumber)+1
TempArr1(RndNumber)=TempArr1(i)
Nexti
'在A1:A100中输入这些数字
Range("a1:a100").Value=http://www.ittribalwo.com/article/TempArr2
EndSub
vba不重复随机数案例三:
在A1:A10单元格产生10个0-100的随机整数,以下是代码:
Subvba不重复随机数()
DimiAsLong
i=100
DimnumAsLong
ReDimarr(i)AsLong
ReDimArr2(i,0)AsLong
DimxAsLong
Forx=0Toi
arr(x)=x
Nextx
Forx=0Toi
num=Int(Rnd()*(i-x))
Arr2(x,0)=arr(num)
arr(num)=arr(i-x)
Nextx
Range("A1:A10")=Arr2
EndSub





