我是Excel VBA的新手。我正在做的项目处理随机数的范围。我有五个范围,发现这段代码非常好用,不会在一个范围内得到任何重复的数字:
Public Sub generateRandNum()
'Define your variabiles
lowerbound = 1
upperbound = 20000
Set randomrange = Range("A1:C5000")
randomrange.Clear
For Each rng1 In randomrange
counter = counter + 1
Next
If counter > upperbound - lowerbound + 1 Then
MsgBox ("Number of cells > number of unique random numbers")
Exit Sub
End If
For Each Rng In randomrange
randnum = Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
Do While Application.WorksheetFunction.CountIf(randomrange, randnum) >= 1
randnum = Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
Loop
Rng.Value = randnum
Next
End Sub
项目的下一部分涉及从第二组中排除一个数字(非随机),从第四组中排除两个数字(也非随机)。
我已经搜索了整个谷歌,看了一些论坛,但要么代码看起来真的很长,要么我不能完全理解它,足以修改它为我的需要。
它必须是在VBA中,因为数字生成器的工作关闭一个按钮单击。
1条答案
按热度按时间dgsult0t1#
可以使用
Dictionary
对象为每一列存储“禁用”数字顺便说一句,你的算法效率很低