# Use Numbers in Specific Cell

P

#### paul_black27

Good afternoon,

I found this while doing a search.
It works fine, but how can I adapt it to take the number of balls
drawn which is in cell H3, the number of balls drawn from which is in
cell I3 and the number of combinations I want to randomly produce x
number of combinations which is in cell J3. These three cells are in a
worksheet called ‘Random Numbers’.

Sub lottery()
Dim my(1 To 49)

For j = 1 To 10
' Reinit array before selecting
For I = 1 To 49

my(I) = I

Next I
For k = 1 To 6
Randomize
NewNumber:
Number = Int(49 * Rnd) + 1
If my(Number) = "" Then
GoTo NewNumber
Else
Cells(j, k) = my(Number)
my(Number) = ""
End If
Next k
Next j

End Sub

I have tried something like this but to no avail ...

Sub Random_Lotto_Numbers()

Dim nDrawn As Long
Dim nfrom As Long
Dim nComb As Long
Dim number As Variant

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Worksheets("Random Lotto Numbers").Select
nDrawn = Range("H3").Value
nfrom = Range("I3").Value
nComb = Range("J3").Value
For j = 1 To nComb ' Number Of Combinations
' Reinitialize Array Before Selecting New Line
For I = 1 To nfrom
my(I) = I
Next I
For k = 1 To nDrawn ' Pick 6 Numbers Per Combination
Randomize
NewNumber:
number = Int(nfrom * Rnd) + 1
If my(number) = "" Then
GoTo NewNumber
Else
Cells(j, k) = my(number)
my(number) = ""
End If
Next k
Next j

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub

Paul

Good afternoon,

I found this while doing a search.
It works fine, but how can I adapt it to take the number of balls
drawn which is in cell H3, the  number of balls drawn from which is in
cell I3 and the number of combinations I want to  randomly produce x
number of combinations which is in cell J3. These three cells are in a
worksheet called ‘Random Numbers’.

Sub lottery()
Dim my(1 To 49)

For j = 1 To 10
' Reinit array before selecting
For I = 1 To 49

my(I) = I

Next I
For k = 1 To 6
Randomize
NewNumber:
Number = Int(49 * Rnd) + 1
If my(Number) = "" Then
GoTo NewNumber
Else
Cells(j, k) = my(Number)
my(Number) = ""
End If
Next k
Next j

End Sub

I have tried something like this but to no avail ...

Sub Random_Lotto_Numbers()

Dim nDrawn As Long
Dim nfrom As Long
Dim nComb As Long
Dim number As Variant

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Worksheets("Random Lotto Numbers").Select
nDrawn = Range("H3").Value
nfrom = Range("I3").Value
nComb = Range("J3").Value
For j = 1 To nComb    '   Number Of Combinations
'   Reinitialize Array Before Selecting New Line
For I = 1 To nfrom
my(I) = I
Next I
For k = 1 To nDrawn  '   Pick 6 Numbers Per Combination
Randomize
NewNumber:
number = Int(nfrom * Rnd) + 1
If my(number) = "" Then
GoTo NewNumber
Else
Cells(j, k) = my(number)
my(number) = ""
End If
Next k
Next j

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub

Paul

Good afternoon,

I have come up with something that works except for one thing. How can
I change ...

Dim my(1 To 49)

.... so it says something like 1 to 'nFrom' instead of having a fixed
number e.g. 49? I don't want to have to change the actual program
every time I want to use it? Also to be honest I am unsure what
my(Number) actually is doing. Anyway, here is the full code ...

Sub Random_Lotto_Numbers()
Dim nDrawn As Long
Dim nFrom As Long
Dim nComb As Long

Dim my(1 To 49) ' < Line causing the problem

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Worksheets("Random Lotto Numbers").Select

With ActiveSheet
Range("A1:F65500").Select
Selection.ClearContents
nDrawn = .Range("H3").Value
nFrom = .Range("I3").Value
nComb = .Range("J3").Value
End With

For j = 1 To nComb ' Number of combinations

' Reinitialize Array Before Selecting New Line
For I = 1 To nFrom ' Total numbers to be drawn from
my(I) = I
Next I

For k = 1 To nDrawn ' Numbers in each combination
Randomize
NewNumber:
Number = Int(nFrom * Rnd) + 1
If my(Number) = "" Then
GoTo NewNumber
Else
Cells(j, k) = my(Number)
my(Number) = ""
End If
Next k
Next j

Range("H9").Select