Pickup Data from a Worksheet

P

Paul Black

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
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

Thanks in advance,
Paul
 
P

Paul Black

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
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

Thanks in advance,
Paul

Has anyone got any ideas please?
 
P

Paul Black

Has anyone got any ideas please?- Hide quoted text -

- Show quoted text -

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
Application.DisplayAlerts = False

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.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub

.... kind regards,
Paul
 
P

Paul Black

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
Application.DisplayAlerts = False

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.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub

... kind regards,
Paul- Hide quoted text -

- Show quoted text -

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
Application.DisplayAlerts = False

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

Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Thanks,
Paul
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top