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) = "" '数组的每个数初始化为空白 NextDo 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 IfLoopNextMsgBox str2 '弹出生成的数组窗口End IfEnd Sub
4、输入要生成随机数组的数量,点击【确定】后就可以生成随机数组。
5、程序函数、代码释义:(1)MyArray(5)数组是从第0个开始,到第5个结束,共有6个墙绅褡孛数;Arr锾攒揉敫ay前面的名称(如: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)的顺序不能颠倒,否则将会出错。