Hi Everyone,
I have come up with the Following Macro, Called List_ALL_Triples to List the Total Number of Times EACH Triple has Been Drawn Excluding AND Including the Bonus Number for a 649 Lotto. Just Copy & Paste into a Module.
My Previous Problem ( Including the Bonus Number ) was that I did NOT take into Account that the Including Bonus Data Needed to be Sorted in Ascending Order, Cheers GillesD. I think it was a Case of Not Seeing the Wood for the Trees.
I have Used the Same Setup as GillesD has Previously where Possible.
Setup
In a Sheet Named "No Bonus", Enter Titles Starting in "A1" Such as :-
A1 = Draw
B1 = Ball 1
C1 = Ball 2
D1 = Ball 3
E1 = Ball 4
F1 = Ball 5
G1 = Ball 6
H1 = Bonus
Then Enter ALL the Results ( As Per Above ) for the 649 Lotto Starting in Cell "A2".
In a Sheet Named "Bonus", Enter Titles Starting in "A1" Such as :-
A1 = Draw
B1 = Ball 1
C1 = Ball 2
D1 = Ball 3
E1 = Ball 4
F1 = Ball 5
G1 = Ball 6
H1 = Ball 7
Then Enter the Following Formulas Starting in Cell "A2" :-
"A2" Formula :-
=IF('No Bonus'!$A2=0," ",'No Bonus'!$A2)
"B2" Formula :-
=IF('No Bonus'!$B2:$H2=0," ",SMALL('No Bonus'!$B2:$H2,1))
"C2" Formula :-
=IF('No Bonus'!$B2:$H2=0," ",SMALL('No Bonus'!$B2:$H2,2))
"D2" Formula :-
=IF('No Bonus'!$B2:$H2=0," ",SMALL('No Bonus'!$B2:$H2,3))
"E2" Formula :-
=IF('No Bonus'!$B2:$H2=0," ",SMALL('No Bonus'!$B2:$H2,4))
"F2" Formula :-
=IF('No Bonus'!$B2:$H2=0," ",SMALL('No Bonus'!$B2:$H2,5))
"G2" Formula :-
=IF('No Bonus'!$B2:$H2=0," ",SMALL('No Bonus'!$B2:$H2,6))
"H2" Formula :-
=IF('No Bonus'!$B2:$H2=0," ",SMALL('No Bonus'!$B2:$H2,7))
Copy ALL of these Formulas Down to Say Fifty Or So Draws Past the Current Draw so as to Allow for Future Draw Information.
An Empty Sheet Named "Results" MUST Also be Available. At the End of the Macro, the First Three Columns ( A, B and C ) will Contain the Numbers ( Combinations ) for ALL 18,424 Triples, Column D will Contain the Total Number of Times Excluding the Bonus Number EACH of these Triples has Been Draw, and Column E will Contain the Total Number of Times Including the Bonus Number EACH of these Triples has Been Draw.
You can then Sort on Either Excluding OR Including the Bonus Number.
GillesD, I have Checked the Macro Output with the UK 649 Lotto and it Appears to be OK, would you Kindly Check the Output with the Canadian 649 Lotto Please.
It is Annoying that the Indenting Doesn't Work for Copy & Paste, Sorry.
All the Best.
PAB
Option Explicit
Option Base 1
Public i As Integer
Public j As Integer
Public k As Integer
Public nCount As Long
Public nDraw As Integer
Public nMinA As Integer
Public nMaxF As Integer
Public nNo(7) As Integer
Public nBonus(49, 49, 49) As Integer
Public nNoBonus(49, 49, 49) As Integer
Sub List_ALL_Triples()
Application.ScreenUpdating = False
Sheets("No Bonus").Select
Range("A2").Select
nMinA = 1
nMaxF = 49
Do While ActiveCell.Value > 0
nDraw = ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop
Range("A1").Select
For i = 1 To nDraw
For j = 1 To 7
nNo(j) = ActiveCell.Offset(i, j).Value
Next j
nNoBonus(nNo(1), nNo(2), nNo(3)) = nNoBonus(nNo(1), nNo(2), nNo(3)) + 1
nNoBonus(nNo(1), nNo(2), nNo(4)) = nNoBonus(nNo(1), nNo(2), nNo(4)) + 1
nNoBonus(nNo(1), nNo(2), nNo(5)) = nNoBonus(nNo(1), nNo(2), nNo(5)) + 1
nNoBonus(nNo(1), nNo(2), nNo(6)) = nNoBonus(nNo(1), nNo(2), nNo(6)) + 1
nNoBonus(nNo(1), nNo(3), nNo(4)) = nNoBonus(nNo(1), nNo(3), nNo(4)) + 1
nNoBonus(nNo(1), nNo(3), nNo(5)) = nNoBonus(nNo(1), nNo(3), nNo(5)) + 1
nNoBonus(nNo(1), nNo(3), nNo(6)) = nNoBonus(nNo(1), nNo(3), nNo(6)) + 1
nNoBonus(nNo(1), nNo(4), nNo(5)) = nNoBonus(nNo(1), nNo(4), nNo(5)) + 1
nNoBonus(nNo(1), nNo(4), nNo(6)) = nNoBonus(nNo(1), nNo(4), nNo(6)) + 1
nNoBonus(nNo(1), nNo(5), nNo(6)) = nNoBonus(nNo(1), nNo(5), nNo(6)) + 1
nNoBonus(nNo(2), nNo(3), nNo(4)) = nNoBonus(nNo(2), nNo(3), nNo(4)) + 1
nNoBonus(nNo(2), nNo(3), nNo(5)) = nNoBonus(nNo(2), nNo(3), nNo(5)) + 1
nNoBonus(nNo(2), nNo(3), nNo(6)) = nNoBonus(nNo(2), nNo(3), nNo(6)) + 1
nNoBonus(nNo(2), nNo(4), nNo(5)) = nNoBonus(nNo(2), nNo(4), nNo(5)) + 1
nNoBonus(nNo(2), nNo(4), nNo(6)) = nNoBonus(nNo(2), nNo(4), nNo(6)) + 1
nNoBonus(nNo(2), nNo(5), nNo(6)) = nNoBonus(nNo(2), nNo(5), nNo(6)) + 1
nNoBonus(nNo(3), nNo(4), nNo(5)) = nNoBonus(nNo(3), nNo(4), nNo(5)) + 1
nNoBonus(nNo(3), nNo(4), nNo(6)) = nNoBonus(nNo(3), nNo(4), nNo(6)) + 1
nNoBonus(nNo(3), nNo(5), nNo(6)) = nNoBonus(nNo(3), nNo(5), nNo(6)) + 1
nNoBonus(nNo(4), nNo(5), nNo(6)) = nNoBonus(nNo(4), nNo(5), nNo(6)) + 1
Next i
Sheets("Results").Select
Range("A1").Select
For i = 1 To nMaxF - 2
For j = i + 1 To nMaxF - 1
For k = j + 1 To nMaxF
ActiveCell.Offset(1, 0).Select
ActiveCell.Offset(-1, 0).Value = i
ActiveCell.Offset(-1, 1).Value = j
ActiveCell.Offset(-1, 2).Value = k
ActiveCell.Offset(-1, 3).Value = nNoBonus(i, j, k)
Next k
Next j
Next i
Columns("A:IV").AutoFit
Columns("A:IV").HorizontalAlignment = xlCenter
Call Bonus
Application.ScreenUpdating = True
End Sub
Private Sub Bonus()
Application.ScreenUpdating = False
Sheets("Bonus").Select
Range("A2").Select
Do While ActiveCell.Value > " "
nDraw = ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop
Range("A1").Select
For i = 1 To nDraw
For j = 1 To 7
nNo(j) = ActiveCell.Offset(i, j).Value
Next j
nBonus(nNo(1), nNo(2), nNo(3)) = nBonus(nNo(1), nNo(2), nNo(3)) + 1
nBonus(nNo(1), nNo(2), nNo(4)) = nBonus(nNo(1), nNo(2), nNo(4)) + 1
nBonus(nNo(1), nNo(2), nNo(5)) = nBonus(nNo(1), nNo(2), nNo(5)) + 1
nBonus(nNo(1), nNo(2), nNo(6)) = nBonus(nNo(1), nNo(2), nNo(6)) + 1
nBonus(nNo(1), nNo(2), nNo(7)) = nBonus(nNo(1), nNo(2), nNo(7)) + 1
nBonus(nNo(1), nNo(3), nNo(4)) = nBonus(nNo(1), nNo(3), nNo(4)) + 1
nBonus(nNo(1), nNo(3), nNo(5)) = nBonus(nNo(1), nNo(3), nNo(5)) + 1
nBonus(nNo(1), nNo(3), nNo(6)) = nBonus(nNo(1), nNo(3), nNo(6)) + 1
nBonus(nNo(1), nNo(3), nNo(7)) = nBonus(nNo(1), nNo(3), nNo(7)) + 1
nBonus(nNo(1), nNo(4), nNo(5)) = nBonus(nNo(1), nNo(4), nNo(5)) + 1
nBonus(nNo(1), nNo(4), nNo(6)) = nBonus(nNo(1), nNo(4), nNo(6)) + 1
nBonus(nNo(1), nNo(4), nNo(7)) = nBonus(nNo(1), nNo(4), nNo(7)) + 1
nBonus(nNo(1), nNo(5), nNo(6)) = nBonus(nNo(1), nNo(5), nNo(6)) + 1
nBonus(nNo(1), nNo(5), nNo(7)) = nBonus(nNo(1), nNo(5), nNo(7)) + 1
nBonus(nNo(1), nNo(6), nNo(7)) = nBonus(nNo(1), nNo(6), nNo(7)) + 1
nBonus(nNo(2), nNo(3), nNo(4)) = nBonus(nNo(2), nNo(3), nNo(4)) + 1
nBonus(nNo(2), nNo(3), nNo(5)) = nBonus(nNo(2), nNo(3), nNo(5)) + 1
nBonus(nNo(2), nNo(3), nNo(6)) = nBonus(nNo(2), nNo(3), nNo(6)) + 1
nBonus(nNo(2), nNo(3), nNo(7)) = nBonus(nNo(2), nNo(3), nNo(7)) + 1
nBonus(nNo(2), nNo(4), nNo(5)) = nBonus(nNo(2), nNo(4), nNo(5)) + 1
nBonus(nNo(2), nNo(4), nNo(6)) = nBonus(nNo(2), nNo(4), nNo(6)) + 1
nBonus(nNo(2), nNo(4), nNo(7)) = nBonus(nNo(2), nNo(4), nNo(7)) + 1
nBonus(nNo(2), nNo(5), nNo(6)) = nBonus(nNo(2), nNo(5), nNo(6)) + 1
nBonus(nNo(2), nNo(5), nNo(7)) = nBonus(nNo(2), nNo(5), nNo(7)) + 1
nBonus(nNo(2), nNo(6), nNo(7)) = nBonus(nNo(2), nNo(6), nNo(7)) + 1
nBonus(nNo(3), nNo(4), nNo(5)) = nBonus(nNo(3), nNo(4), nNo(5)) + 1
nBonus(nNo(3), nNo(4), nNo(6)) = nBonus(nNo(3), nNo(4), nNo(6)) + 1
nBonus(nNo(3), nNo(4), nNo(7)) = nBonus(nNo(3), nNo(4), nNo(7)) + 1
nBonus(nNo(3), nNo(5), nNo(6)) = nBonus(nNo(3), nNo(5), nNo(6)) + 1
nBonus(nNo(3), nNo(5), nNo(7)) = nBonus(nNo(3), nNo(5), nNo(7)) + 1
nBonus(nNo(3), nNo(6), nNo(7)) = nBonus(nNo(3), nNo(6), nNo(7)) + 1
nBonus(nNo(4), nNo(5), nNo(6)) = nBonus(nNo(4), nNo(5), nNo(6)) + 1
nBonus(nNo(4), nNo(5), nNo(7)) = nBonus(nNo(4), nNo(5), nNo(7)) + 1
nBonus(nNo(4), nNo(6), nNo(7)) = nBonus(nNo(4), nNo(6), nNo(7)) + 1
nBonus(nNo(5), nNo(6), nNo(7)) = nBonus(nNo(5), nNo(6), nNo(7)) + 1
Next i
Sheets("Results").Select
Range("A1").Select
For i = 1 To nMaxF - 2
For j = i + 1 To nMaxF - 1
For k = j + 1 To nMaxF
ActiveCell.Offset(1, 0).Select
ActiveCell.Offset(-1, 4).Value = nBonus(i, j, k)
Next k
Next j
Next i
Columns("A:IV").AutoFit
Application.ScreenUpdating = True
End Sub