Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi everyone,
I am trying to loop through ALL the combinations and count the number of occurances of the last digit for each of the combinations. There are 10 categories of last digit :- 111111 2887500 211110 6930000 221100 2772000 222000 105600 311100 924000 321000 316800 330000 3960 411000 39600 420000 3960 510000 396 Total = 13983816 111111 means there are 2,887,500 combinations with all last digits different. 321000 means there are 316,800 combinations where 3 of the last digits are the same, 2 of the last digits are the same (but a different last digit to the 3) and 1 last digit (but a different last digit to the 3 or 2). Here is what I have so far :- Option Explicit Dim A As Long, B As Long, C As Long, D As Long, E As Long, F As Long Sub LastDigit() Dim i As Integer Dim LastDigit As Integer Dim DigitCounts(0 To 9) As Integer ' This will hold counters for each digit 0-9 Dim nDupl As Integer Const minVal As Integer = 1 ' The minimum value in ANY combination Const maxVal As Integer = 49 ' The maximum value in ANY combination Application.ScreenUpdating = False For i = 0 To 9 DigitCounts(i) = 0 Next i For A = minVal To maxVal - 5 For B = A + 1 To maxVal - 4 For C = B + 1 To maxVal - 3 For D = C + 1 To maxVal - 2 For E = D + 1 To maxVal - 1 For F = E + 1 To maxVal For i = 0 To 4 LastDigit = i - 10 * Int(i) / 10 DigitCounts(LastDigit) = DigitCounts(LastDigit) + 1 Next i nDupl = 0 For i = 0 To 9 If DigitCounts(i) 1 Then nDupl = nDupl + DigitCounts(i) Next i Next F Next E Next D Next C Next B Next A ActiveCell.Offset(0, 5).Value = nDupl ActiveCell.Offset(1, 0).Select Application.ScreenUpdating = True End Sub Any help will be greatly appreciated. Thanks in Advance. All the Best. Paul |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I don't follow this at all
"111111 means there are 2,887,500 combinations with all last digits different." Why ? What's a combination ? What's a category ? 321000 means there are 316,800 combinations where 3 of the last digits are the same, 2 of the last digits are the same (but a different last digit to the 3) and 1 last digit (but a different last digit to the 3 or 2). I defy any one to make sense of that ! Why is 6930000 more than 2887500, seems out of sequence ? In passing, looks like you'll be dealing with numbers over 32k. If potentially so you should declare them 'As Long' to avoid overflows (As Integer in VB/VBA is virtually redundant in 32bit systems). Also FWIW, no need to disable screen updating for the sake of populating just two cells. Regards, Peter T "Paul Black" wrote in message ups.com... Hi everyone, I am trying to loop through ALL the combinations and count the number of occurances of the last digit for each of the combinations. There are 10 categories of last digit :- 111111 2887500 211110 6930000 221100 2772000 222000 105600 311100 924000 321000 316800 330000 3960 411000 39600 420000 3960 510000 396 Total = 13983816 111111 means there are 2,887,500 combinations with all last digits different. 321000 means there are 316,800 combinations where 3 of the last digits are the same, 2 of the last digits are the same (but a different last digit to the 3) and 1 last digit (but a different last digit to the 3 or 2). Here is what I have so far :- Option Explicit Dim A As Long, B As Long, C As Long, D As Long, E As Long, F As Long Sub LastDigit() Dim i As Integer Dim LastDigit As Integer Dim DigitCounts(0 To 9) As Integer ' This will hold counters for each digit 0-9 Dim nDupl As Integer Const minVal As Integer = 1 ' The minimum value in ANY combination Const maxVal As Integer = 49 ' The maximum value in ANY combination Application.ScreenUpdating = False For i = 0 To 9 DigitCounts(i) = 0 Next i For A = minVal To maxVal - 5 For B = A + 1 To maxVal - 4 For C = B + 1 To maxVal - 3 For D = C + 1 To maxVal - 2 For E = D + 1 To maxVal - 1 For F = E + 1 To maxVal For i = 0 To 4 LastDigit = i - 10 * Int(i) / 10 DigitCounts(LastDigit) = DigitCounts(LastDigit) + 1 Next i nDupl = 0 For i = 0 To 9 If DigitCounts(i) 1 Then nDupl = nDupl + DigitCounts(i) Next i Next F Next E Next D Next C Next B Next A ActiveCell.Offset(0, 5).Value = nDupl ActiveCell.Offset(1, 0).Select Application.ScreenUpdating = True End Sub Any help will be greatly appreciated. Thanks in Advance. All the Best. Paul |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi peter,
They are 6 number combinations. So for 6 numbers from 49 numbers there are 13,983,816 total combinations. 111111 could be numbers 01 02 03 04 05 06, making ALL 6 last digits different. 321000 could be numbers 01 11 21 30 40 49. The full list of categories are :- 111111 211110 221100 222000 311100 321000 330000 411000 420000 510000 The program will hopefully calculate the the total combinations for ALL the categories and list them one under the other. Thanks in Advance. All the Best. Paul On Oct 5, 10:59 am, "Peter T" <peter_t@discussions wrote: I don't follow this at all "111111 means there are 2,887,500 combinations with all last digits different." Why ? What's a combination ? What's a category ? 321000 means there are 316,800 combinations where 3 of the last digits are the same, 2 of the last digits are the same (but a different last digit to the 3) and 1 last digit (but a different last digit to the 3 or 2). I defy any one to make sense of that ! Why is 6930000 more than 2887500, seems out of sequence ? In passing, looks like you'll be dealing with numbers over 32k. If potentially so you should declare them 'As Long' to avoid overflows (As Integer in VB/VBA is virtually redundant in 32bit systems). Also FWIW, no need to disable screen updating for the sake of populating just two cells. Regards, Peter T "Paul Black" wrote in message ups.com... Hi everyone, I am trying to loop through ALL the combinations and count the number of occurances of the last digit for each of the combinations. There are 10 categories of last digit :- 111111 2887500 211110 6930000 221100 2772000 222000 105600 311100 924000 321000 316800 330000 3960 411000 39600 420000 3960 510000 396 Total = 13983816 111111 means there are 2,887,500 combinations with all last digits different. 321000 means there are 316,800 combinations where 3 of the last digits are the same, 2 of the last digits are the same (but a different last digit to the 3) and 1 last digit (but a different last digit to the 3 or 2). Here is what I have so far :- Option Explicit Dim A As Long, B As Long, C As Long, D As Long, E As Long, F As Long Sub LastDigit() Dim i As Integer Dim LastDigit As Integer Dim DigitCounts(0 To 9) As Integer ' This will hold counters for each digit 0-9 Dim nDupl As Integer Const minVal As Integer = 1 ' The minimum value in ANY combination Const maxVal As Integer = 49 ' The maximum value in ANY combination Application.ScreenUpdating = False For i = 0 To 9 DigitCounts(i) = 0 Next i For A = minVal To maxVal - 5 For B = A + 1 To maxVal - 4 For C = B + 1 To maxVal - 3 For D = C + 1 To maxVal - 2 For E = D + 1 To maxVal - 1 For F = E + 1 To maxVal For i = 0 To 4 LastDigit = i - 10 * Int(i) / 10 DigitCounts(LastDigit) = DigitCounts(LastDigit) + 1 Next i nDupl = 0 For i = 0 To 9 If DigitCounts(i) 1 Then nDupl = nDupl + DigitCounts(i) Next i Next F Next E Next D Next C Next B Next A ActiveCell.Offset(0, 5).Value = nDupl ActiveCell.Offset(1, 0).Select Application.ScreenUpdating = True End Sub Any help will be greatly appreciated. Thanks in Advance. All the Best. Paul- Hide quoted text - - Show quoted text - |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I've narrowed it down to a few different interpretations of what you might
mean. But you win - I give up! I'm curious now to see if someone else can understand <g Regards, Peter T "Paul Black" wrote in message oups.com... Hi peter, They are 6 number combinations. So for 6 numbers from 49 numbers there are 13,983,816 total combinations. 111111 could be numbers 01 02 03 04 05 06, making ALL 6 last digits different. 321000 could be numbers 01 11 21 30 40 49. The full list of categories are :- 111111 211110 221100 222000 311100 321000 330000 411000 420000 510000 The program will hopefully calculate the the total combinations for ALL the categories and list them one under the other. Thanks in Advance. All the Best. Paul On Oct 5, 10:59 am, "Peter T" <peter_t@discussions wrote: I don't follow this at all "111111 means there are 2,887,500 combinations with all last digits different." Why ? What's a combination ? What's a category ? 321000 means there are 316,800 combinations where 3 of the last digits are the same, 2 of the last digits are the same (but a different last digit to the 3) and 1 last digit (but a different last digit to the 3 or 2). I defy any one to make sense of that ! Why is 6930000 more than 2887500, seems out of sequence ? In passing, looks like you'll be dealing with numbers over 32k. If potentially so you should declare them 'As Long' to avoid overflows (As Integer in VB/VBA is virtually redundant in 32bit systems). Also FWIW, no need to disable screen updating for the sake of populating just two cells. Regards, Peter T "Paul Black" wrote in message ups.com... Hi everyone, I am trying to loop through ALL the combinations and count the number of occurances of the last digit for each of the combinations. There are 10 categories of last digit :- 111111 2887500 211110 6930000 221100 2772000 222000 105600 311100 924000 321000 316800 330000 3960 411000 39600 420000 3960 510000 396 Total = 13983816 111111 means there are 2,887,500 combinations with all last digits different. 321000 means there are 316,800 combinations where 3 of the last digits are the same, 2 of the last digits are the same (but a different last digit to the 3) and 1 last digit (but a different last digit to the 3 or 2). Here is what I have so far :- Option Explicit Dim A As Long, B As Long, C As Long, D As Long, E As Long, F As Long Sub LastDigit() Dim i As Integer Dim LastDigit As Integer Dim DigitCounts(0 To 9) As Integer ' This will hold counters for each digit 0-9 Dim nDupl As Integer Const minVal As Integer = 1 ' The minimum value in ANY combination Const maxVal As Integer = 49 ' The maximum value in ANY combination Application.ScreenUpdating = False For i = 0 To 9 DigitCounts(i) = 0 Next i For A = minVal To maxVal - 5 For B = A + 1 To maxVal - 4 For C = B + 1 To maxVal - 3 For D = C + 1 To maxVal - 2 For E = D + 1 To maxVal - 1 For F = E + 1 To maxVal For i = 0 To 4 LastDigit = i - 10 * Int(i) / 10 DigitCounts(LastDigit) = DigitCounts(LastDigit) + 1 Next i nDupl = 0 For i = 0 To 9 If DigitCounts(i) 1 Then nDupl = nDupl + DigitCounts(i) Next i Next F Next E Next D Next C Next B Next A ActiveCell.Offset(0, 5).Value = nDupl ActiveCell.Offset(1, 0).Select Application.ScreenUpdating = True End Sub Any help will be greatly appreciated. Thanks in Advance. All the Best. Paul- Hide quoted text - - Show quoted text - |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Definitely strange, but I do see one pattern: All the digits add up to 6.
Subtract one from the right-most 1-digit and add one to the left-most 1-digit to keep the total at 6, and so on. But the list is missing 600000. Other than that I'm lost. "Peter T" wrote: I've narrowed it down to a few different interpretations of what you might mean. But you win - I give up! I'm curious now to see if someone else can understand <g Regards, Peter T "Paul Black" wrote in message oups.com... Hi peter, They are 6 number combinations. So for 6 numbers from 49 numbers there are 13,983,816 total combinations. 111111 could be numbers 01 02 03 04 05 06, making ALL 6 last digits different. 321000 could be numbers 01 11 21 30 40 49. The full list of categories are :- 111111 211110 221100 222000 311100 321000 330000 411000 420000 510000 The program will hopefully calculate the the total combinations for ALL the categories and list them one under the other. Thanks in Advance. All the Best. Paul On Oct 5, 10:59 am, "Peter T" <peter_t@discussions wrote: I don't follow this at all "111111 means there are 2,887,500 combinations with all last digits different." Why ? What's a combination ? What's a category ? 321000 means there are 316,800 combinations where 3 of the last digits are the same, 2 of the last digits are the same (but a different last digit to the 3) and 1 last digit (but a different last digit to the 3 or 2). I defy any one to make sense of that ! Why is 6930000 more than 2887500, seems out of sequence ? In passing, looks like you'll be dealing with numbers over 32k. If potentially so you should declare them 'As Long' to avoid overflows (As Integer in VB/VBA is virtually redundant in 32bit systems). Also FWIW, no need to disable screen updating for the sake of populating just two cells. Regards, Peter T "Paul Black" wrote in message ups.com... Hi everyone, I am trying to loop through ALL the combinations and count the number of occurances of the last digit for each of the combinations. There are 10 categories of last digit :- 111111 2887500 211110 6930000 221100 2772000 222000 105600 311100 924000 321000 316800 330000 3960 411000 39600 420000 3960 510000 396 Total = 13983816 111111 means there are 2,887,500 combinations with all last digits different. 321000 means there are 316,800 combinations where 3 of the last digits are the same, 2 of the last digits are the same (but a different last digit to the 3) and 1 last digit (but a different last digit to the 3 or 2). Here is what I have so far :- Option Explicit Dim A As Long, B As Long, C As Long, D As Long, E As Long, F As Long Sub LastDigit() Dim i As Integer Dim LastDigit As Integer Dim DigitCounts(0 To 9) As Integer ' This will hold counters for each digit 0-9 Dim nDupl As Integer Const minVal As Integer = 1 ' The minimum value in ANY combination Const maxVal As Integer = 49 ' The maximum value in ANY combination Application.ScreenUpdating = False For i = 0 To 9 DigitCounts(i) = 0 Next i For A = minVal To maxVal - 5 For B = A + 1 To maxVal - 4 For C = B + 1 To maxVal - 3 For D = C + 1 To maxVal - 2 For E = D + 1 To maxVal - 1 For F = E + 1 To maxVal For i = 0 To 4 LastDigit = i - 10 * Int(i) / 10 DigitCounts(LastDigit) = DigitCounts(LastDigit) + 1 Next i nDupl = 0 For i = 0 To 9 If DigitCounts(i) 1 Then nDupl = nDupl + DigitCounts(i) Next i Next F Next E Next D Next C Next B Next A ActiveCell.Offset(0, 5).Value = nDupl ActiveCell.Offset(1, 0).Select Application.ScreenUpdating = True End Sub Any help will be greatly appreciated. Thanks in Advance. All the Best. Paul- Hide quoted text - - Show quoted text - |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Sorry guys,
Charlie you are quite right, I left out the 600000 category, my appologies. Basically, there are 13,983,816 combinations of 6 numbers. EACH 6 number combination has a last digit. The program will ideally calculate each 6 numbers last digit category and keep a count. These will then be listed. Thanks in Advance. All the Best. Paul On Oct 5, 6:24 pm, Charlie wrote: Definitely strange, but I do see one pattern: All the digits add up to 6. Subtract one from the right-most 1-digit and add one to the left-most 1-digit to keep the total at 6, and so on. But the list is missing 600000. Other than that I'm lost. "Peter T" wrote: I've narrowed it down to a few different interpretations of what you might mean. But you win - I give up! I'm curious now to see if someone else can understand <g Regards, Peter T "Paul Black" wrote in message roups.com... Hi peter, They are 6 number combinations. So for 6 numbers from 49 numbers there are 13,983,816 total combinations. 111111 could be numbers 01 02 03 04 05 06, making ALL 6 last digits different. 321000 could be numbers 01 11 21 30 40 49. The full list of categories are :- 111111 211110 221100 222000 311100 321000 330000 411000 420000 510000 The program will hopefully calculate the the total combinations for ALL the categories and list them one under the other. Thanks in Advance. All the Best. Paul On Oct 5, 10:59 am, "Peter T" <peter_t@discussions wrote: I don't follow this at all "111111 means there are 2,887,500 combinations with all last digits different." Why ? What's a combination ? What's a category ? 321000 means there are 316,800 combinations where 3 of the last digits are the same, 2 of the last digits are the same (but a different last digit to the 3) and 1 last digit (but a different last digit to the 3 or 2). I defy any one to make sense of that ! Why is 6930000 more than 2887500, seems out of sequence ? In passing, looks like you'll be dealing with numbers over 32k. If potentially so you should declare them 'As Long' to avoid overflows (As Integer in VB/VBA is virtually redundant in 32bit systems). Also FWIW, no need to disable screen updating for the sake of populating just two cells. Regards, Peter T "Paul Black" wrote in message oups.com... Hi everyone, I am trying to loop through ALL the combinations and count the number of occurances of the last digit for each of the combinations. There are 10 categories of last digit :- 111111 2887500 211110 6930000 221100 2772000 222000 105600 311100 924000 321000 316800 330000 3960 411000 39600 420000 3960 510000 396 Total = 13983816 111111 means there are 2,887,500 combinations with all last digits different. 321000 means there are 316,800 combinations where 3 of the last digits are the same, 2 of the last digits are the same (but a different last digit to the 3) and 1 last digit (but a different last digit to the 3 or 2). Here is what I have so far :- Option Explicit Dim A As Long, B As Long, C As Long, D As Long, E As Long, F As Long Sub LastDigit() Dim i As Integer Dim LastDigit As Integer Dim DigitCounts(0 To 9) As Integer ' This will hold counters for each digit 0-9 Dim nDupl As Integer Const minVal As Integer = 1 ' The minimum value in ANY combination Const maxVal As Integer = 49 ' The maximum value in ANY combination Application.ScreenUpdating = False For i = 0 To 9 DigitCounts(i) = 0 Next i For A = minVal To maxVal - 5 For B = A + 1 To maxVal - 4 For C = B + 1 To maxVal - 3 For D = C + 1 To maxVal - 2 For E = D + 1 To maxVal - 1 For F = E + 1 To maxVal For i = 0 To 4 LastDigit = i - 10 * Int(i) / 10 DigitCounts(LastDigit) = DigitCounts(LastDigit) + 1 Next i nDupl = 0 For i = 0 To 9 If DigitCounts(i) 1 Then nDupl = nDupl + DigitCounts(i) Next i Next F Next E Next D Next C Next B Next A ActiveCell.Offset(0, 5).Value = nDupl ActiveCell.Offset(1, 0).Select Application.ScreenUpdating = True End Sub Any help will be greatly appreciated. Thanks in Advance. All the Best. Paul- Hide quoted text - - Show quoted text -- Hide quoted text - - Show quoted text - |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
How do you change single digits to recognized double digits? | Excel Worksheet Functions | |||
VBA write macro change column with 3 number digits to 4 digits the | Excel Discussion (Misc queries) | |||
What function do I use to calculate a Sum of Digits? | Excel Worksheet Functions | |||
How to calculate the UPC Check Digits | Excel Worksheet Functions | |||
calculate using last four digits of number in cell | Excel Worksheet Functions |