I was looking thru some Excel files that a former employee left. This code was used to generate a list of non-duplicated random numbers, according to the parameters entered. I ran it a few (like 100) times, but it never seems to give me "low" results, i.e., lower = 1, upper = 10000, number = 500 and it never returns a random number less than 100. I can't seem to figure where the error is. I know that it IS possible to not generate a number below 100 on occasion, but when running it repeatedly?
Sub Unique_Numbers()
Dim x As Long, y As Long, z As Long, tempnum As Long
Dim flag As Boolean
Dim i As Integer
Dim foundCell As Range
Application.ScreenUpdating = False
x = Application.InputBox("Enter starting Random Number" _
, "Random Number Generation", 1, , , , , 1)
y = Application.InputBox("Enter ending Random Number" _
, "Random Number Generation", 10000, , , , , 1)
z = Application.InputBox("How many random numbers would" _
& "you like to generate?" _
, "random Number Generation", 500, , , , , 1)
If z = 0 Then Exit Sub
If z > 3500 Then z = 3500
If z > y - x + 1 Then
MsgBox "You specified more numbers to return than " _
& "are possible in the range!"
Exit Sub
End If
Randomize
Cells(1, 1) = Int((y - x + 1) * Rnd + x)
For i = 2 To z
Do
flag = False
Randomize
tempnum = Int((y - x + 1) * Rnd + x)
Set foundCell = Range("a1", _
Range("a1").End(xlDown).Address).Find(tempnum)
If Not (foundCell Is Nothing) Then
flag = True
End If
Loop Until Not flag
Cells(i, 1) = tempnum
Next
Columns("A:A").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
Bookmarks