View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Ozgur Pars[_2_] Ozgur Pars[_2_] is offline
external usenet poster
 
Posts: 70
Default Creating Unique Random Numbers?

Bob, Norman thanks for your replies.

Can I link the constant to a cell? Rather than inputting it into the code I
want it to change before every run. When I tried to do so I failed getting a
error message about the constant.
Const NUM_GENERATED As Long = Sheets("OFFERS").Range("BO2").Value '<===
change to suit

However I used application.Transpose(arrList()) with the previus code and
got the desired result.

Thank you for your help.

Best regards,
Ozgur


"Bob Phillips" wrote:

Sub GetThem()
Dim j As Long
Dim N As Long
Const LNG_PLUG As Long = 999
Const NUM_GENERATED As Long = 799 '<=== change to suit
Dim arrCheck(1 To NUM_GENERATED + 1) As Long
Dim arrList(1 To NUM_GENERATED) As Long

j = 1
Do While j < NUM_GENERATED
'Get a random number
Randomize
N = Int(Rnd * NUM_GENERATED + 1)
'If number unique then add to arrList.
If arrCheck(N) < LNG_PLUG Then
arrList(j) = N
arrCheck(N) = LNG_PLUG
j = j + 1
End If
Loop
Sheets(1).Range("A1:A" & NUM_GENERATED).Value =
Application.Transpose(arrList())
End Sub


--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)

"Ozgur Pars" wrote in message
...
Hi everyone,
I found the below code on this board (I think it originated from Tom
Ogilvy). I need to put the generated numbers in a row but the list

generated
is designed for a column (if this makes any sense at all).
Its probably simple but I am new at this stuff and would appreciate any

help.

Rgds,
Ozgur

Sub GetThem()
Dim arrCheck(1 To 800) As Long
Dim arrList(1 To 799) As Long
Dim j As Long
Dim N As Long
Const LNG_PLUG As Long = 999

j = 1
Do While j < 4
'Get a random number
Randomize
N = Int(Rnd * 800 + 1)
'If number unique then add to arrList.
If arrCheck(N) < LNG_PLUG Then
arrList(j) = N
arrCheck(N) = LNG_PLUG
j = j + 1
End If
Loop
Sheets(1).Range("A4:A6").Value = arrList()
' Sheets(1).Range(Cells(5, 1), Cells(5, Sheets(1).Range("b1"))).Value =
arrList()
End Sub