老师,你好!
下面的这段代码,假设部分,用数组方法该怎么改写:如能提到上一个循环内,goto 语句从随机数字开始,是不是效果更好一些。
我的意思是每一行做为一个数组,数组的最后一个随机数字与前面的不重复,这个数字就是有效的,否则重新生成一个随机数字。
Sub 随机数字()
Dim m, n, i, x, k, t, r, arr(), brr()
m = Range("a18"): n = Range("a19")
ReDim arr(1 To n, 1 To 1)
ReDim brr(1 To n, 1 To m)
Cells(1, 1).Resize(16, 16) = ""
For k = 1 To m
For i = 1 To n
arr(i, 1) = i
Next i
xx:
For i = 1 To n
x = Int(Rnd * (n - i + 1)) + i
t = arr(i, 1): arr(i, 1) = arr(x, 1): arr(x, 1) = t
Cells(i, k) = arr(i, 1)
brr(i, k) = arr(i, 1)
Next i
For r = 1 To n
If Application.CountIf(Cells(r, 1).Resize(1, k), Cells(r, k)) > 1 Then GoTo xx
Next r
Next k
Cells(1, 1).Resize(n, m) = brr
End Sub |