使用Array数组生成不重复的随机数
1、电脑上面打开Excel表格,然后使用【Alt+F11】组合键打开VBA编辑器。

2、在VBA编辑器的菜单栏上面点击【插入】、【模块】。

3、在模块代码框里边输入以下VBA程序代码,输入完代码程序后按下【F5】键运行。
Sub ArrayUse()
Dim i, j, k, x1, x2, x4, x5, str, str2, MyValue, MyArray(5)
On Error Resume Next '忽略运行过程中可能出现的错误
MyValue = InputBox("请输入生成数组数量", "生成数组提示", 1) '生成数组数量输入框
If MyValue >= 1 Then '如果输入的数值大于或等于1,则
For x4 = 0 To (Int(MyValue) - 1) '执行 Int(MyValue) 次循环
j = 0 'j初始化为0
x2 = 0 'x2初始化为0
str = "" 'str初始化为空白
For x5 = 0 To 5
MyArray(x5) = "" '数组的每个数初始化为空白
Next
Do
x1 = 0 'x1初始化为0
k = Int(Rnd() * 33 + 1) '随机数1-33
For i = 0 To 5 '对数组MyArray()里面的每一个数访问
If MyArray(i) <> k Then '如果数组里面的数与随机数不相等,则
x1 = x1 + 1 '不相等的次数增加1
End If
Next
If x1 = 6 Then '如果数组里面的数与随机数都不相等,则
MyArray(x2) = k '把随机数写入数组里面
If str <> "" Then '如果str不等于空白,则
str = str & "," & k '把随机数k拼接到str里面
End If
If str = "" Then '如果str等于空白,则
str = k '把随机数k赋给str
End If
x2 = x2 + 1 '数组里面每写入一个数,则x2增加1
End If
j = j + 1 '每执行一次Do循环,则j增加1
If j > 200000 Or x2 = 6 Then '如果Do循环超过200000次或数组写入6个数,则
If str2 <> "" Then '如果str2不等于空白,则
str2 = str2 & Chr(10) & Chr(13) & str 'str2+换行符+回车+str
End If
If str2 = "" Then '如果str2等于空白,则
str2 = str '把str赋给str2
End If
Exit Do
End If
Loop
Next
MsgBox str2 '弹出生成的数组窗口
End If
End Sub

4、输入要生成随机数组的数量,点击【确定】后就可以生成随机数组。

5、程序函数、代码释义:
(1)MyArray(5)数组是从第0个开始,到第5个结束,共有6个数;Array前面的名称(如:My)可以根据个人喜欢改成其他的字符。
(2)在给数组赋值时,应当与数组里面的第几个相对应,如:MyArray(1)=10是把10赋给数组里边的第2位,而第几位可以是变量。
(3)对于重复使用的中间变量,在重复使用之前应当初始化,以免后续生成的数据出错。
(4)Int是取整函数,Rnd是大于等于0且小于1的随机数,Chr(10)是换行符,Chr(13)是回车符。
(5)程序里边使用生成的随机数逐一与数组里边的数比较(如:If MyArray(i) <> k Then),不相等时中间变量x1会自动加1,条件满足时就会把随机数赋给数组,这样就可以不用COUNTIF函数来判断。
(6)程序的执行顺序是自上而下,因此,(If str <> "" Then……End If)和(If str = "" Then……End If)的顺序不能颠倒,否则将会出错。

1、电脑上面新建一个文本文档,在文本文档里面输入【方法一步骤③】里边的代码(不含程序开头“Sub ArrayUse()”和结尾“End Sub”)并保存。

2、重命名文本文档,并把后缀名“.txt”改成“.vbs”。

3、双击已经重命名的vbs脚本程序,输入要生成随机数的数组数量并点击【确定】,vbs脚本生成的随机数完成。
