| Home | Forums | Reviews | Articles | Register |
![]() |
| Thread Tools | Rate Thread |
|
|
|
| |
|
=?Utf-8?B?Sm9lbA==?=
Guest
Posts: n/a
|
Here we go again. Is it better to have arrays, functtions, or just put the
code In-line. If A,b,C,d,E,F werre an array the code can be simplified. I went back to our previous posting and stole some of my old code. Can you steal from yourself? Option Explicit Option Base 1 Sub Sum_Of_Digits() Dim Start As Double Start = Timer Dim A As Integer Dim B As Integer Dim C As Integer Dim D As Integer Dim E As Integer Dim F As Integer Dim i As Integer Dim nMinA As Integer Dim nMaxF As Integer Dim nType(70) As Double Dim number(6) As Integer Dim sum As Long Application.ScreenUpdating = False Sheets("Results").Select Range("B4").Select nMinA = 1 nMaxF = 49 For i = 11 To 70 nType(i) = 0 Next i For A = nMinA To nMaxF - 5 number(1) = A For B = A + 1 To nMaxF - 4 number(2) = B For C = B + 1 To nMaxF - 3 number(3) = C For D = C + 1 To nMaxF - 2 number(4) = D For E = D + 1 To nMaxF - 1 number(5) = E For F = E + 1 To nMaxF number(6) = F sum = 0 For i = 1 To 6 sum = sum + Int(number(i) / 10) + (number(i) Mod 10) Next i nType(sum) = nType(sum) + 1 Next F Next E Next D Next C Next B Next A For i = 11 To 70 ActiveCell.Offset(0, 0).Value = "Sum Of Digits =" ActiveCell.Offset(0, 1).Value = i ActiveCell.Offset(0, 2).Value = nType(i) ActiveCell.Offset(1, 0).Select Next i ActiveCell.Offset(0, 0).Value = "Total Combinations Produced" sum = 0 For i = 1 To 70 sum = sum + nType(i) Next i ActiveCell.Offset(0, 2).Value = sum ActiveCell.Offset(2, 0) = "This Program Took " & _ Format(((Timer - Start) / 24 / 60 / 60), "hh:mm:ss") & " To Process " Range("B68").Select Application.ScreenUpdating = True End Sub "Paul Black" wrote: > Hi everyone, > > Is there any way that the code below can be condensed or shortened > please > It cycles through six number combinations and counts the total of ALL > the digits in each combination. So, combination 10,11,12,13,14,15 will > = 1+0+1+1+1+2+1+3+1+4+1+5 = 21. > The total of ALL the digits range from 11 to 70. > Her is the code :- > > Option Explicit > Option Base 1 > > Sub Sum_Of_Digits() > Dim Start As Double > Start = Timer > Dim A As Integer > Dim B As Integer > Dim C As Integer > Dim D As Integer > Dim E As Integer > Dim F As Integer > Dim i As Integer > Dim nMinA As Integer > Dim nMaxF As Integer > Dim nType(70) As Double > > Application.ScreenUpdating = False > Sheets("Results").Select > Range("B4").Select > > nMinA = 1 > nMaxF = 49 > > For i = 11 To 70 > nType(i) = 0 > Next i > > For A = nMinA To nMaxF - 5 > For B = A + 1 To nMaxF - 4 > For C = B + 1 To nMaxF - 3 > For D = C + 1 To nMaxF - 2 > For E = D + 1 To nMaxF - 1 > For F = E + 1 To nMaxF > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 1 Then nType(1) = nType(1) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 2 Then nType(2) = nType(2) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 3 Then nType(3) = nType(3) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 4 Then nType(4) = nType(4) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 5 Then nType(5) = nType(5) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 6 Then nType(6) = nType(6) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 7 Then nType(7) = nType(7) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 8 Then nType(8) = nType(8) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 9 Then nType(9) = nType(9) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 10 Then nType(10) = > nType(10) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 11 Then nType(11) = > nType(11) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 12 Then nType(12) = > nType(12) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 13 Then nType(13) = > nType(13) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 14 Then nType(14) = > nType(14) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 15 Then nType(15) = > nType(15) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 16 Then nType(16) = > nType(16) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 17 Then nType(17) = > nType(17) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 18 Then nType(18) = > nType(18) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 19 Then nType(19) = > nType(19) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 20 Then nType(20) = > nType(20) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 21 Then nType(21) = > nType(21) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 22 Then nType(22) = > nType(22) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 23 Then nType(23) = > nType(23) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 24 Then nType(24) = > nType(24) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 25 Then nType(25) = > nType(25) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 26 Then nType(26) = > nType(26) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 27 Then nType(27) = > nType(27) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 28 Then nType(28) = > nType(28) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 29 Then nType(29) = > nType(29) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 30 Then nType(30) = > nType(30) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 31 Then nType(31) = > nType(31) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 32 Then nType(32) = > nType(32) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 33 Then nType(33) = > nType(33) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 34 Then nType(34) = > nType(34) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 35 Then nType(35) = > nType(35) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 36 Then nType(36) = > nType(36) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 37 Then nType(37) = > nType(37) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 38 Then nType(38) = > nType(38) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 39 Then nType(39) = > nType(39) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 40 Then nType(40) = > nType(40) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 41 Then nType(41) = > nType(41) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 42 Then nType(42) = > nType(42) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 43 Then nType(43) = > nType(43) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 44 Then nType(44) = > nType(44) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 45 Then nType(45) = > nType(45) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 46 Then nType(46) = > nType(46) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 47 Then nType(47) = > nType(47) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 48 Then nType(48) = > nType(48) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 49 Then nType(49) = > nType(49) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 50 Then nType(50) = > nType(50) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 51 Then nType(51) = > nType(51) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 52 Then nType(52) = > nType(52) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 53 Then nType(53) = > nType(53) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 54 Then nType(54) = > nType(54) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 55 Then nType(55) = > nType(55) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 56 Then nType(56) = > nType(56) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 57 Then nType(57) = > nType(57) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 58 Then nType(58) = > nType(58) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 59 Then nType(59) = > nType(59) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 60 Then nType(60) = > nType(60) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 61 Then nType(61) = > nType(61) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 62 Then nType(62) = > nType(62) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 63 Then nType(63) = > nType(63) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 64 Then nType(64) = |
|
||
|
||||
|
=?Utf-8?B?Sm9lbA==?=
Guest
Posts: n/a
|
This code runs faster than my las
Option Explicit Option Base 1 Sub Sum_Of_Digits() Dim Start As Double Start = Timer Dim A As Integer Dim B As Integer Dim C As Integer Dim D As Integer Dim E As Integer Dim F As Integer Dim i As Integer Dim nMinA As Integer Dim nMaxF As Integer Dim nType(70) As Double Dim sum As Long Application.ScreenUpdating = False Sheets("Results").Select Range("B4").Select nMinA = 1 nMaxF = 49 For i = 11 To 70 nType(i) = 0 Next i For A = nMinA To nMaxF - 5 For B = A + 1 To nMaxF - 4 For C = B + 1 To nMaxF - 3 For D = C + 1 To nMaxF - 2 For E = D + 1 To nMaxF - 1 For F = E + 1 To nMaxF sum = A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 _ + D Mod 10 + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 nType(sum) = nType(sum) + 1 Next F Next E Next D Next C Next B Next A For i = 11 To 70 ActiveCell.Offset(0, 0).Value = "Sum Of Digits =" ActiveCell.Offset(0, 1).Value = i ActiveCell.Offset(0, 2).Value = nType(i) ActiveCell.Offset(1, 0).Select Next i ActiveCell.Offset(0, 0).Value = "Total Combinations Produced" sum = 0 For i = 1 To 70 sum = sum + nType(i) Next i ActiveCell.Offset(0, 2).Value = sum ActiveCell.Offset(2, 0) = "This Program Took " & _ Format(((Timer - Start) / 24 / 60 / 60), "hh:mm:ss") & " To Process " Range("B68").Select Application.ScreenUpdating = True End Sub t posting. "Paul Black" wrote: > Hi everyone, > > Is there any way that the code below can be condensed or shortened > please > It cycles through six number combinations and counts the total of ALL > the digits in each combination. So, combination 10,11,12,13,14,15 will > = 1+0+1+1+1+2+1+3+1+4+1+5 = 21. > The total of ALL the digits range from 11 to 70. > Her is the code :- > > Option Explicit > Option Base 1 > > Sub Sum_Of_Digits() > Dim Start As Double > Start = Timer > Dim A As Integer > Dim B As Integer > Dim C As Integer > Dim D As Integer > Dim E As Integer > Dim F As Integer > Dim i As Integer > Dim nMinA As Integer > Dim nMaxF As Integer > Dim nType(70) As Double > > Application.ScreenUpdating = False > Sheets("Results").Select > Range("B4").Select > > nMinA = 1 > nMaxF = 49 > > For i = 11 To 70 > nType(i) = 0 > Next i > > For A = nMinA To nMaxF - 5 > For B = A + 1 To nMaxF - 4 > For C = B + 1 To nMaxF - 3 > For D = C + 1 To nMaxF - 2 > For E = D + 1 To nMaxF - 1 > For F = E + 1 To nMaxF > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 1 Then nType(1) = nType(1) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 2 Then nType(2) = nType(2) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 3 Then nType(3) = nType(3) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 4 Then nType(4) = nType(4) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 5 Then nType(5) = nType(5) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 6 Then nType(6) = nType(6) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 7 Then nType(7) = nType(7) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 8 Then nType(8) = nType(8) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 9 Then nType(9) = nType(9) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 10 Then nType(10) = > nType(10) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 11 Then nType(11) = > nType(11) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 12 Then nType(12) = > nType(12) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 13 Then nType(13) = > nType(13) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 14 Then nType(14) = > nType(14) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 15 Then nType(15) = > nType(15) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 16 Then nType(16) = > nType(16) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 17 Then nType(17) = > nType(17) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 18 Then nType(18) = > nType(18) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 19 Then nType(19) = > nType(19) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 20 Then nType(20) = > nType(20) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 21 Then nType(21) = > nType(21) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 22 Then nType(22) = > nType(22) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 23 Then nType(23) = > nType(23) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 24 Then nType(24) = > nType(24) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 25 Then nType(25) = > nType(25) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 26 Then nType(26) = > nType(26) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 27 Then nType(27) = > nType(27) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 28 Then nType(28) = > nType(28) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 29 Then nType(29) = > nType(29) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 30 Then nType(30) = > nType(30) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 31 Then nType(31) = > nType(31) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 32 Then nType(32) = > nType(32) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 33 Then nType(33) = > nType(33) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 34 Then nType(34) = > nType(34) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 35 Then nType(35) = > nType(35) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 36 Then nType(36) = > nType(36) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 37 Then nType(37) = > nType(37) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 38 Then nType(38) = > nType(38) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 39 Then nType(39) = > nType(39) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 40 Then nType(40) = > nType(40) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 41 Then nType(41) = > nType(41) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 42 Then nType(42) = > nType(42) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 43 Then nType(43) = > nType(43) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 44 Then nType(44) = > nType(44) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 45 Then nType(45) = > nType(45) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 46 Then nType(46) = > nType(46) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 47 Then nType(47) = > nType(47) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 48 Then nType(48) = > nType(48) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 49 Then nType(49) = > nType(49) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 50 Then nType(50) = > nType(50) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 51 Then nType(51) = > nType(51) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 52 Then nType(52) = > nType(52) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 53 Then nType(53) = > nType(53) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 54 Then nType(54) = > nType(54) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 55 Then nType(55) = > nType(55) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 56 Then nType(56) = > nType(56) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 57 Then nType(57) = > nType(57) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 58 Then nType(58) = > nType(58) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 59 Then nType(59) = > nType(59) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 60 Then nType(60) = > nType(60) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 61 Then nType(61) = > nType(61) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 62 Then nType(62) = > nType(62) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 63 Then nType(63) = > nType(63) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 64 Then nType(64) = |
|
||
|
||||
|
Dana DeLouis
Guest
Posts: n/a
|
Another option would be similar to previous code.
The code is figuring out the sum of digits over and over. Try doing it once per each of the 49 digits. Dim n(1 To 49) As Long ' Do Once Here For R = 1 To 49 n(R) = 'Sum of digits Next R Now...just add. :>) a+b+c...ect -- Dana DeLouis "Paul Black" <(E-Mail Removed)> wrote in message news:(E-Mail Removed)... > Hi everyone, > > Is there any way that the code below can be condensed or shortened > please > It cycles through six number combinations and counts the total of ALL > the digits in each combination. So, combination 10,11,12,13,14,15 will > = 1+0+1+1+1+2+1+3+1+4+1+5 = 21. > The total of ALL the digits range from 11 to 70. > Her is the code :- > > Option Explicit > Option Base 1 > > Sub Sum_Of_Digits() > Dim Start As Double > Start = Timer > Dim A As Integer > Dim B As Integer > Dim C As Integer > Dim D As Integer > Dim E As Integer > Dim F As Integer > Dim i As Integer > Dim nMinA As Integer > Dim nMaxF As Integer > Dim nType(70) As Double > > Application.ScreenUpdating = False > Sheets("Results").Select > Range("B4").Select > > nMinA = 1 > nMaxF = 49 > > For i = 11 To 70 > nType(i) = 0 > Next i > > For A = nMinA To nMaxF - 5 > For B = A + 1 To nMaxF - 4 > For C = B + 1 To nMaxF - 3 > For D = C + 1 To nMaxF - 2 > For E = D + 1 To nMaxF - 1 > For F = E + 1 To nMaxF > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 1 Then nType(1) = nType(1) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 2 Then nType(2) = nType(2) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 3 Then nType(3) = nType(3) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 4 Then nType(4) = nType(4) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 5 Then nType(5) = nType(5) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 6 Then nType(6) = nType(6) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 7 Then nType(7) = nType(7) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 8 Then nType(8) = nType(8) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 9 Then nType(9) = nType(9) > + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 10 Then nType(10) = > nType(10) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 11 Then nType(11) = > nType(11) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 12 Then nType(12) = > nType(12) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 13 Then nType(13) = > nType(13) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 14 Then nType(14) = > nType(14) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 15 Then nType(15) = > nType(15) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 16 Then nType(16) = > nType(16) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 17 Then nType(17) = > nType(17) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 18 Then nType(18) = > nType(18) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 19 Then nType(19) = > nType(19) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 20 Then nType(20) = > nType(20) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 21 Then nType(21) = > nType(21) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 22 Then nType(22) = > nType(22) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 23 Then nType(23) = > nType(23) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 24 Then nType(24) = > nType(24) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 25 Then nType(25) = > nType(25) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 26 Then nType(26) = > nType(26) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 27 Then nType(27) = > nType(27) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 28 Then nType(28) = > nType(28) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 29 Then nType(29) = > nType(29) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 30 Then nType(30) = > nType(30) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 31 Then nType(31) = > nType(31) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 32 Then nType(32) = > nType(32) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 33 Then nType(33) = > nType(33) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 34 Then nType(34) = > nType(34) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 35 Then nType(35) = > nType(35) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 36 Then nType(36) = > nType(36) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 37 Then nType(37) = > nType(37) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 38 Then nType(38) = > nType(38) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 39 Then nType(39) = > nType(39) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 40 Then nType(40) = > nType(40) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 41 Then nType(41) = > nType(41) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 42 Then nType(42) = > nType(42) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 43 Then nType(43) = > nType(43) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 44 Then nType(44) = > nType(44) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 45 Then nType(45) = > nType(45) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 46 Then nType(46) = > nType(46) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 47 Then nType(47) = > nType(47) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 48 Then nType(48) = > nType(48) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 49 Then nType(49) = > nType(49) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 50 Then nType(50) = > nType(50) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 51 Then nType(51) = > nType(51) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 52 Then nType(52) = > nType(52) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 53 Then nType(53) = > nType(53) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 54 Then nType(54) = > nType(54) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 55 Then nType(55) = > nType(55) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 56 Then nType(56) = > nType(56) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 57 Then nType(57) = > nType(57) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 58 Then nType(58) = > nType(58) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 59 Then nType(59) = > nType(59) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 60 Then nType(60) = > nType(60) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 61 Then nType(61) = > nType(61) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 62 Then nType(62) = > nType(62) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 63 Then nType(63) = > nType(63) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 64 Then nType(64) = > nType(64) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 65 Then nType(65) = > nType(65) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 66 Then nType(66) = > nType(66) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 67 Then nType(67) = > nType(67) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 68 Then nType(68) = > nType(68) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 69 Then nType(69) = > nType(69) + 1 > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > + D Mod 10 _ > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 70 Then nType(70) = > nType(70) + 1 > > Next F > Next E > Next D > Next C > Next B > Next A > > For i = 11 To 70 > ActiveCell.Offset(0, 0).Value = "Sum Of Digits =" > ActiveCell.Offset(0, 1).Value = i > ActiveCell.Offset(0, 2).Value = nType(i) > ActiveCell.Offset(1, 0).Select > Next i > > ActiveCell.Offset(0, 0).Value = "Total Combinations Produced" > ActiveCell.Offset(0, 2).Value = nType(1) + nType(2) + nType(3) _ > + nType(4) + nType(5) + nType(6) + nType(7) + nType(8) + nType(9) > _ > + nType(10) + nType(11) + nType(12) + nType(13) + nType(14) + > nType(15) _ > + nType(16) + nType(17) + nType(18) + nType(19) + nType(20) + > nType(21) _ > + nType(22) + nType(23) + nType(24) + nType(25) + nType(26) + > nType(27) _ > + nType(28) + nType(29) + nType(30) + nType(31) + nType(32) + > nType(33) _ > + nType(34) + nType(35) + nType(36) + nType(37) + nType(38) + > nType(39) _ > + nType(40) + nType(41) + nType(42) + nType(43) + nType(44) + > nType(45) _ > + nType(46) + nType(47) + nType(48) + nType(49) + nType(50) + > nType(51) _ > + nType(52) + nType(53) + nType(54) + nType(55) + nType(56) + > nType(57) _ > + nType(58) + nType(59) + nType(60) + nType(61) + nType(62) + > nType(63) _ > + nType(64) + nType(65) + nType(66) + nType(67) + nType(68) + > nType(69) _ > + nType(70) > > ActiveCell.Offset(2, 0) = "This Program Took " & _ > Format(((Timer - Start) / 24 / 60 / 60), "hh:mm:ss") & " To > Process" > > Range("B68").Select > Application.ScreenUpdating = True > End Sub > > Thanks in Advance. > All the Best. > Paul > |
|
||
|
||||
|
=?Utf-8?B?Sm9lbA==?=
Guest
Posts: n/a
|
Dana: Isn't what you are suggesting the same thing I posted in my code?
sum = A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 _ + D Mod 10 + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 nType(sum) = nType(sum) + 1 "Dana DeLouis" wrote: > Another option would be similar to previous code. > The code is figuring out the sum of digits over and over. > Try doing it once per each of the 49 digits. > > Dim n(1 To 49) As Long > > ' Do Once Here > For R = 1 To 49 > n(R) = 'Sum of digits > Next R > > Now...just add. :>) > a+b+c...ect > > -- > Dana DeLouis > > > > "Paul Black" <(E-Mail Removed)> wrote in message > news:(E-Mail Removed)... > > Hi everyone, > > > > Is there any way that the code below can be condensed or shortened > > please > > It cycles through six number combinations and counts the total of ALL > > the digits in each combination. So, combination 10,11,12,13,14,15 will > > = 1+0+1+1+1+2+1+3+1+4+1+5 = 21. > > The total of ALL the digits range from 11 to 70. > > Her is the code :- > > > > Option Explicit > > Option Base 1 > > > > Sub Sum_Of_Digits() > > Dim Start As Double > > Start = Timer > > Dim A As Integer > > Dim B As Integer > > Dim C As Integer > > Dim D As Integer > > Dim E As Integer > > Dim F As Integer > > Dim i As Integer > > Dim nMinA As Integer > > Dim nMaxF As Integer > > Dim nType(70) As Double > > > > Application.ScreenUpdating = False > > Sheets("Results").Select > > Range("B4").Select > > > > nMinA = 1 > > nMaxF = 49 > > > > For i = 11 To 70 > > nType(i) = 0 > > Next i > > > > For A = nMinA To nMaxF - 5 > > For B = A + 1 To nMaxF - 4 > > For C = B + 1 To nMaxF - 3 > > For D = C + 1 To nMaxF - 2 > > For E = D + 1 To nMaxF - 1 > > For F = E + 1 To nMaxF > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 1 Then nType(1) = nType(1) > > + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 2 Then nType(2) = nType(2) > > + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 3 Then nType(3) = nType(3) > > + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 4 Then nType(4) = nType(4) > > + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 5 Then nType(5) = nType(5) > > + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 6 Then nType(6) = nType(6) > > + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 7 Then nType(7) = nType(7) > > + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 8 Then nType(8) = nType(8) > > + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 9 Then nType(9) = nType(9) > > + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 10 Then nType(10) = > > nType(10) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 11 Then nType(11) = > > nType(11) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 12 Then nType(12) = > > nType(12) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 13 Then nType(13) = > > nType(13) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 14 Then nType(14) = > > nType(14) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 15 Then nType(15) = > > nType(15) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 16 Then nType(16) = > > nType(16) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 17 Then nType(17) = > > nType(17) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 18 Then nType(18) = > > nType(18) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 19 Then nType(19) = > > nType(19) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 20 Then nType(20) = > > nType(20) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 21 Then nType(21) = > > nType(21) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 22 Then nType(22) = > > nType(22) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 23 Then nType(23) = > > nType(23) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 24 Then nType(24) = > > nType(24) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 25 Then nType(25) = > > nType(25) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 26 Then nType(26) = > > nType(26) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 27 Then nType(27) = > > nType(27) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 28 Then nType(28) = > > nType(28) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 29 Then nType(29) = > > nType(29) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 30 Then nType(30) = > > nType(30) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 31 Then nType(31) = > > nType(31) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 32 Then nType(32) = > > nType(32) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 33 Then nType(33) = > > nType(33) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 34 Then nType(34) = > > nType(34) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 35 Then nType(35) = > > nType(35) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 36 Then nType(36) = > > nType(36) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 37 Then nType(37) = > > nType(37) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 38 Then nType(38) = > > nType(38) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 39 Then nType(39) = > > nType(39) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 40 Then nType(40) = > > nType(40) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 41 Then nType(41) = > > nType(41) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 42 Then nType(42) = > > nType(42) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 43 Then nType(43) = > > nType(43) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 44 Then nType(44) = > > nType(44) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 45 Then nType(45) = > > nType(45) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 46 Then nType(46) = > > nType(46) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 47 Then nType(47) = > > nType(47) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 48 Then nType(48) = > > nType(48) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 49 Then nType(49) = > > nType(49) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 50 Then nType(50) = > > nType(50) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 51 Then nType(51) = > > nType(51) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 52 Then nType(52) = > > nType(52) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 53 Then nType(53) = > > nType(53) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 54 Then nType(54) = > > nType(54) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 55 Then nType(55) = > > nType(55) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 56 Then nType(56) = > > nType(56) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 57 Then nType(57) = > > nType(57) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 58 Then nType(58) = > > nType(58) + 1 > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > + D Mod 10 _ |
|
||
|
||||
|
Paul Black
Guest
Posts: n/a
|
Hi Joel & Dana, thanks for the replies.
Joel. Your second code does indeed run faster than the first and produces the correct results thank you. Dana, I have done as you suggested but can't get the code to work. This is what I have :- Option Explicit Option Base 1 Sub Sum_Of__Digits() Dim A As Long, B As Long, C As Long Dim D As Long, E As Long, F As Long Dim R As Long Dim nMinA As Integer Dim nMaxF As Integer Dim S As String Dim StartTime As Double Dim Total As Long Dim n(1 To 49) As Long Dim SumOfDigits(11 To 70) As Long StartTime = Timer nMinA = 1 nMaxF = 49 For R = 1 To 49 n(R) = A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 _ + D Mod 10 + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 Next R For A = nMinA To nMaxF - 5 For B = A + 1 To nMaxF - 4 For C = B + 1 To nMaxF - 3 For D = C + 1 To nMaxF - 2 For E = D + 1 To nMaxF - 1 For F = E + 1 To nMaxF R = n(A) + n(B) + n(C) + n(D) + n(E) + n(F) SumOfDigits(R) = SumOfDigits(R) + 1 Next F Next E Next D Next C Next B Next A For R = 11 To 70 Cells(R + 1, 1) = R Cells(R + 1, 2) = Format(SumOfDigits(R), "#,0") Total = Total + SumOfDigits(R) Next R S = Format(Total, "#,0") Cells(R + 1, 2) = S Debug.Print Timer - StartTime If Total = WorksheetFunction.Combin(49, 6) Then MsgBox "Total is correct: " & S Else MsgBox "Error in Total: " & S End If End Sub Thanks in Advance. All the Best. Paul On Nov 12, 2:20 pm, Joel <J...@discussions.microsoft.com> wrote: > Dana: Isn't what you are suggesting the same thing I posted in my code? > > sum = A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \10 _ > + D Mod 10 + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 > > nType(sum) = nType(sum) + 1 > > > > "Dana DeLouis" wrote: > > Another option would be similar to previous code. > > The code is figuring out the sum of digits over and over. > > Try doing it once per each of the 49 digits. > > > Dim n(1 To 49) As Long > > > ' Do Once Here > > For R = 1 To 49 > > n(R) = 'Sum of digits > > Next R > > > Now...just add. :>) > > a+b+c...ect > > > -- > > Dana DeLouis > > > "Paul Black" <paul_blac...@hotmail.com> wrote in message > >news:(E-Mail Removed)... > > > Hi everyone, > > > > Is there any way that the code below can be condensed or shortened > > > please > > > It cycles through six number combinations and counts the total of ALL > > > the digits in each combination. So, combination 10,11,12,13,14,15 will > > > = 1+0+1+1+1+2+1+3+1+4+1+5 = 21. > > > The total of ALL the digits range from 11 to 70. > > > Her is the code :- > > > > Option Explicit > > > Option Base 1 > > > > Sub Sum_Of_Digits() > > > Dim Start As Double > > > Start = Timer > > > Dim A As Integer > > > Dim B As Integer > > > Dim C As Integer > > > Dim D As Integer > > > Dim E As Integer > > > Dim F As Integer > > > Dim i As Integer > > > Dim nMinA As Integer > > > Dim nMaxF As Integer > > > Dim nType(70) As Double > > > > Application.ScreenUpdating = False > > > Sheets("Results").Select > > > Range("B4").Select > > > > nMinA = 1 > > > nMaxF = 49 > > > > For i = 11 To 70 > > > nType(i) = 0 > > > Next i > > > > For A = nMinA To nMaxF - 5 > > > For B = A + 1 To nMaxF - 4 > > > For C = B + 1 To nMaxF - 3 > > > For D = C + 1 To nMaxF - 2 > > > For E = D + 1 To nMaxF - 1 > > > For F = E + 1 To nMaxF > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 1 Then nType(1) = nType(1) > > > + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 2 Then nType(2) = nType(2) > > > + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 3 Then nType(3) = nType(3) > > > + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 4 Then nType(4) = nType(4) > > > + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 5 Then nType(5) = nType(5) > > > + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 6 Then nType(6) = nType(6) > > > + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 7 Then nType(7) = nType(7) > > > + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 8 Then nType(8) = nType(8) > > > + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 9 Then nType(9) = nType(9) > > > + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 10 Then nType(10) = > > > nType(10) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 11 Then nType(11) = > > > nType(11) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 12 Then nType(12) = > > > nType(12) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 13 Then nType(13) = > > > nType(13) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 14 Then nType(14) = > > > nType(14) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 15 Then nType(15) = > > > nType(15) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 16 Then nType(16) = > > > nType(16) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 17 Then nType(17) = > > > nType(17) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 18 Then nType(18) = > > > nType(18) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 19 Then nType(19) = > > > nType(19) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 20 Then nType(20) = > > > nType(20) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 21 Then nType(21) = > > > nType(21) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 22 Then nType(22) = > > > nType(22) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 23 Then nType(23) = > > > nType(23) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 24 Then nType(24) = > > > nType(24) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 25 Then nType(25) = > > > nType(25) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 26 Then nType(26) = > > > nType(26) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 27 Then nType(27) = > > > nType(27) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 28 Then nType(28) = > > > nType(28) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 29 Then nType(29) = > > > nType(29) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 30 Then nType(30) = > > > nType(30) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 31 Then nType(31) = > > > nType(31) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 32 Then nType(32) = > > > nType(32) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 33 Then nType(33) = > > > nType(33) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 34 Then nType(34) = > > > nType(34) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 35 Then nType(35) = > > > nType(35) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 36 Then nType(36) = > > > nType(36) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 37 Then nType(37) = > > > nType(37) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 38 Then nType(38) = > > > nType(38) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 39 Then nType(39) = > > > nType(39) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 40 Then nType(40) = > > > nType(40) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 41 Then nType(41) = > > > nType(41) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 42 Then nType(42) = > > > nType(42) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 43 Then nType(43) = > > > nType(43) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 44 Then nType(44) = > > > nType(44) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 45 Then nType(45) = > > > nType(45) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 46 Then nType(46) = > > > nType(46) + 1 > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > + D Mod 10 _ > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 47 Then nType(47) = > > > nType(47) + 1 > > > If > > ... > > read more »- Hide quoted text - > > - Show quoted text - |
|
||
|
||||
|
=?Utf-8?B?Sm9lbA==?=
Guest
Posts: n/a
|
Paul: I think this is what Dana was suggesting. It runs 2x faster than my
other code. Option Explicit Option Base 1 Sub Sum_Of_Digits() Dim Start As Double Start = Timer Dim A As Integer Dim B As Integer Dim C As Integer Dim D As Integer Dim E As Integer Dim F As Integer Dim i As Integer Dim nMinA As Integer Dim nMaxF As Integer Dim nType(70) As Double Dim sum As Long Application.ScreenUpdating = False Sheets("Results").Select Range("B4").Select Dim results(49) As Long nMinA = 1 nMaxF = 49 For i = 11 To 70 nType(i) = 0 Next i For i = nMinA To nMaxF results(i) = i \ 10 + i Mod 10 Next i For A = nMinA To nMaxF - 5 For B = A + 1 To nMaxF - 4 For C = B + 1 To nMaxF - 3 For D = C + 1 To nMaxF - 2 For E = D + 1 To nMaxF - 1 For F = E + 1 To nMaxF sum = results(A) + results(B) + results(C) + results(D) + results(E) + results(F) nType(sum) = nType(sum) + 1 Next F Next E Next D Next C Next B Next A For i = 11 To 70 ActiveCell.Offset(0, 0).Value = "Sum Of Digits =" ActiveCell.Offset(0, 1).Value = i ActiveCell.Offset(0, 2).Value = nType(i) ActiveCell.Offset(1, 0).Select Next i ActiveCell.Offset(0, 0).Value = "Total Combinations Produced" sum = 0 For i = 1 To 70 sum = sum + nType(i) Next i ActiveCell.Offset(0, 2).Value = sum ActiveCell.Offset(2, 0) = "This Program Took " & _ Format(((Timer - Start) / 24 / 60 / 60), "hh:mm:ss") & " To Process " Range("B68").Select Application.ScreenUpdating = True End Sub "Paul Black" wrote: > Hi Joel & Dana, thanks for the replies. > > Joel. > Your second code does indeed run faster than the first and produces > the correct results thank you. > > Dana, > I have done as you suggested but can't get the code to work. This is > what I have :- > > Option Explicit > Option Base 1 > > Sub Sum_Of__Digits() > Dim A As Long, B As Long, C As Long > Dim D As Long, E As Long, F As Long > Dim R As Long > Dim nMinA As Integer > Dim nMaxF As Integer > Dim S As String > Dim StartTime As Double > Dim Total As Long > Dim n(1 To 49) As Long > Dim SumOfDigits(11 To 70) As Long > > StartTime = Timer > > nMinA = 1 > nMaxF = 49 > > For R = 1 To 49 > n(R) = A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D > \ 10 _ > + D Mod 10 + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 > Next R > > For A = nMinA To nMaxF - 5 > For B = A + 1 To nMaxF - 4 > For C = B + 1 To nMaxF - 3 > For D = C + 1 To nMaxF - 2 > For E = D + 1 To nMaxF - 1 > For F = E + 1 To nMaxF > R = n(A) + n(B) + n(C) + n(D) + n(E) + n(F) > SumOfDigits(R) = SumOfDigits(R) + 1 > Next F > Next E > Next D > Next C > Next B > Next A > > For R = 11 To 70 > Cells(R + 1, 1) = R > Cells(R + 1, 2) = Format(SumOfDigits(R), "#,0") > Total = Total + SumOfDigits(R) > Next R > > S = Format(Total, "#,0") > Cells(R + 1, 2) = S > > Debug.Print Timer - StartTime > > If Total = WorksheetFunction.Combin(49, 6) Then > MsgBox "Total is correct: " & S > Else > MsgBox "Error in Total: " & S > End If > > End Sub > > Thanks in Advance. > All the Best. > Paul > > On Nov 12, 2:20 pm, Joel <J...@discussions.microsoft.com> wrote: > > Dana: Isn't what you are suggesting the same thing I posted in my code? > > > > sum = A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 _ > > + D Mod 10 + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 > > > > nType(sum) = nType(sum) + 1 > > > > > > > > "Dana DeLouis" wrote: > > > Another option would be similar to previous code. > > > The code is figuring out the sum of digits over and over. > > > Try doing it once per each of the 49 digits. > > > > > Dim n(1 To 49) As Long > > > > > ' Do Once Here > > > For R = 1 To 49 > > > n(R) = 'Sum of digits > > > Next R > > > > > Now...just add. :>) > > > a+b+c...ect > > > > > -- > > > Dana DeLouis > > > > > "Paul Black" <paul_blac...@hotmail.com> wrote in message > > >news:(E-Mail Removed)... > > > > Hi everyone, > > > > > > Is there any way that the code below can be condensed or shortened > > > > please > > > > It cycles through six number combinations and counts the total of ALL > > > > the digits in each combination. So, combination 10,11,12,13,14,15 will > > > > = 1+0+1+1+1+2+1+3+1+4+1+5 = 21. > > > > The total of ALL the digits range from 11 to 70. > > > > Her is the code :- > > > > > > Option Explicit > > > > Option Base 1 > > > > > > Sub Sum_Of_Digits() > > > > Dim Start As Double > > > > Start = Timer > > > > Dim A As Integer > > > > Dim B As Integer > > > > Dim C As Integer > > > > Dim D As Integer > > > > Dim E As Integer > > > > Dim F As Integer > > > > Dim i As Integer > > > > Dim nMinA As Integer > > > > Dim nMaxF As Integer > > > > Dim nType(70) As Double > > > > > > Application.ScreenUpdating = False > > > > Sheets("Results").Select > > > > Range("B4").Select > > > > > > nMinA = 1 > > > > nMaxF = 49 > > > > > > For i = 11 To 70 > > > > nType(i) = 0 > > > > Next i > > > > > > For A = nMinA To nMaxF - 5 > > > > For B = A + 1 To nMaxF - 4 > > > > For C = B + 1 To nMaxF - 3 > > > > For D = C + 1 To nMaxF - 2 > > > > For E = D + 1 To nMaxF - 1 > > > > For F = E + 1 To nMaxF > > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 1 Then nType(1) = nType(1) > > > > + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 2 Then nType(2) = nType(2) > > > > + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 3 Then nType(3) = nType(3) > > > > + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 4 Then nType(4) = nType(4) > > > > + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 5 Then nType(5) = nType(5) > > > > + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 6 Then nType(6) = nType(6) > > > > + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 7 Then nType(7) = nType(7) > > > > + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 8 Then nType(8) = nType(8) > > > > + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 9 Then nType(9) = nType(9) > > > > + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 10 Then nType(10) = > > > > nType(10) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 11 Then nType(11) = > > > > nType(11) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 12 Then nType(12) = > > > > nType(12) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 13 Then nType(13) = > > > > nType(13) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 14 Then nType(14) = > > > > nType(14) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 15 Then nType(15) = > > > > nType(15) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 16 Then nType(16) = > > > > nType(16) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 17 Then nType(17) = > > > > nType(17) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 18 Then nType(18) = > > > > nType(18) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 19 Then nType(19) = > > > > nType(19) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 20 Then nType(20) = > > > > nType(20) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 21 Then nType(21) = > > > > nType(21) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 22 Then nType(22) = > > > > nType(22) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 23 Then nType(23) = > > > > nType(23) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 24 Then nType(24) = > > > > nType(24) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 25 Then nType(25) = > > > > nType(25) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 26 Then nType(26) = > > > > nType(26) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 27 Then nType(27) = > > > > nType(27) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 28 Then nType(28) = > > > > nType(28) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 29 Then nType(29) = > > > > nType(29) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 30 Then nType(30) = > > > > nType(30) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 31 Then nType(31) = > > > > nType(31) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 32 Then nType(32) = > > > > nType(32) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 33 Then nType(33) = > > > > nType(33) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 34 Then nType(34) = > > > > nType(34) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 35 Then nType(35) = > > > > nType(35) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 36 Then nType(36) = > > > > nType(36) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 37 Then nType(37) = > > > > nType(37) + 1 > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > + D Mod 10 _ > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 38 Then nType(38) = |
|
||
|
||||
|
Paul Black
Guest
Posts: n/a
|
Brilliant Joel, thanks very much.
My final program on this is to calculate the first digits. I know using Int(i \ 10) gives the correct results for numbers 10 to 49 ( 1 to 4 ) but NOT for numbers 1 to 9, it gives zeros. I have adapted the code to try and achieve this but it will not work. Here is the code :- Option Explicit Option Base 1 Sub First_Digits() Dim Start As Double Start = Timer Dim A As Integer Dim B As Integer Dim C As Integer Dim D As Integer Dim E As Integer Dim F As Integer Dim i As Integer Dim nMinA As Integer Dim nMaxF As Integer Dim nType(9) As Double Dim sum As Long Application.ScreenUpdating = False 'Sheets("Results").Select Range("B4").Select Dim results(49) As Long nMinA = 1 nMaxF = 49 For i = 1 To 9 nType(i) = 0 Next i For i = nMinA To nMaxF results(i) = Int(i \ 10) Next i For A = nMinA To nMaxF - 5 For B = A + 1 To nMaxF - 4 For C = B + 1 To nMaxF - 3 For D = C + 1 To nMaxF - 2 For E = D + 1 To nMaxF - 1 For F = E + 1 To nMaxF sum = results(A) + results(B) + results(C) + results(D) + results(E) + results(F) nType(sum) = nType(sum) + 1 Next F Next E Next D Next C Next B Next A For i = 1 To 9 ActiveCell.Offset(0, 0).Value = "First Digits =" ActiveCell.Offset(0, 1).Value = i ActiveCell.Offset(0, 2).Value = nType(i) ActiveCell.Offset(1, 0).Select Next i ActiveCell.Offset(0, 0).Value = "Total Combinations Produced" sum = 0 For i = 1 To 9 sum = sum + nType(i) Next i ActiveCell.Offset(0, 2).Value = sum ActiveCell.Offset(2, 0) = "This Program Took " & _ Format(((Timer - Start) / 24 / 60 / 60), "hh:mm:ss") & " To Process " Range("B68").Select Application.ScreenUpdating = True End Sub Thanks in Advance. All the Best. Paul On Nov 12, 8:11 pm, Joel <J...@discussions.microsoft.com> wrote: > Paul: I think this is what Dana was suggesting. It runs 2x faster than my > other code. > > Option Explicit > Option Base 1 > Sub Sum_Of_Digits() > Dim Start As Double > Start = Timer > Dim A As Integer > Dim B As Integer > Dim C As Integer > Dim D As Integer > Dim E As Integer > Dim F As Integer > Dim i As Integer > Dim nMinA As Integer > Dim nMaxF As Integer > Dim nType(70) As Double > Dim sum As Long > Application.ScreenUpdating = False > Sheets("Results").Select > Range("B4").Select > Dim results(49) As Long > > nMinA = 1 > nMaxF = 49 > > For i = 11 To 70 > nType(i) = 0 > Next i > > For i = nMinA To nMaxF > results(i) = i \ 10 + i Mod 10 > Next i > > For A = nMinA To nMaxF - 5 > For B = A + 1 To nMaxF - 4 > For C = B + 1 To nMaxF - 3 > For D = C + 1 To nMaxF - 2 > For E = D + 1 To nMaxF - 1 > For F = E + 1 To nMaxF > > sum = results(A) + results(B) + results(C) + results(D) + results(E) + > results(F) > > nType(sum) = nType(sum) + 1 > > Next F > Next E > Next D > Next C > Next B > Next A > > For i = 11 To 70 > ActiveCell.Offset(0, 0).Value = "Sum Of Digits =" > ActiveCell.Offset(0, 1).Value = i > ActiveCell.Offset(0, 2).Value = nType(i) > ActiveCell.Offset(1, 0).Select > Next i > > ActiveCell.Offset(0, 0).Value = "Total Combinations Produced" > sum = 0 > For i = 1 To 70 > sum = sum + nType(i) > Next i > ActiveCell.Offset(0, 2).Value = sum > > ActiveCell.Offset(2, 0) = "This Program Took " & _ > Format(((Timer - Start) / 24 / 60 / 60), "hh:mm:ss") & " To Process " > > Range("B68").Select > Application.ScreenUpdating = True > End Sub > > > > "PaulBlack" wrote: > > Hi Joel & Dana, thanks for the replies. > > > Joel. > > Your second code does indeed run faster than the first and produces > > the correct results thank you. > > > Dana, > > I have done as you suggested but can't get the code to work. This is > > what I have :- > > > Option Explicit > > Option Base 1 > > > Sub Sum_Of__Digits() > > Dim A As Long, B As Long, C As Long > > Dim D As Long, E As Long, F As Long > > Dim R As Long > > Dim nMinA As Integer > > Dim nMaxF As Integer > > Dim S As String > > Dim StartTime As Double > > Dim Total As Long > > Dim n(1 To 49) As Long > > Dim SumOfDigits(11 To 70) As Long > > > StartTime = Timer > > > nMinA = 1 > > nMaxF = 49 > > > For R = 1 To 49 > > n(R) = A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D > > \ 10 _ > > + D Mod 10 + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 > > Next R > > > For A = nMinA To nMaxF - 5 > > For B = A + 1 To nMaxF - 4 > > For C = B + 1 To nMaxF - 3 > > For D = C + 1 To nMaxF - 2 > > For E = D + 1 To nMaxF - 1 > > For F = E + 1 To nMaxF > > R = n(A) + n(B) + n(C) + n(D) + n(E) + n(F) > > SumOfDigits(R) = SumOfDigits(R) + 1 > > Next F > > Next E > > Next D > > Next C > > Next B > > Next A > > > For R = 11 To 70 > > Cells(R + 1, 1) = R > > Cells(R + 1, 2) = Format(SumOfDigits(R), "#,0") > > Total = Total + SumOfDigits(R) > > Next R > > > S = Format(Total, "#,0") > > Cells(R + 1, 2) = S > > > Debug.Print Timer - StartTime > > > If Total = WorksheetFunction.Combin(49, 6) Then > > MsgBox "Total is correct: " & S > > Else > > MsgBox "Error in Total: " & S > > End If > > > End Sub > > > Thanks in Advance. > > All the Best. > >Paul > > > On Nov 12, 2:20 pm, Joel <J...@discussions.microsoft.com> wrote: > > > Dana: Isn't what you are suggesting the same thing I posted in my code? > > > > sum = A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 _ > > > + D Mod 10 + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 > > > > nType(sum) = nType(sum) + 1 > > > > "Dana DeLouis" wrote: > > > > Another option would be similar to previous code. > > > > The code is figuring out the sum of digits over and over. > > > > Try doing it once per each of the 49 digits. > > > > > Dim n(1 To 49) As Long > > > > > ' Do Once Here > > > > For R = 1 To 49 > > > > n(R) = 'Sum of digits > > > > Next R > > > > > Now...just add. :>) > > > > a+b+c...ect > > > > > -- > > > > Dana DeLouis > > > > > "PaulBlack" <paul_blac...@hotmail.com> wrote in message > > > >news:(E-Mail Removed)... > > > > > Hi everyone, > > > > > > Is there any way that the code below can be condensed or shortened > > > > > please > > > > > It cycles through six number combinations and counts the total of ALL > > > > > the digits in each combination. So, combination 10,11,12,13,14,15 will > > > > > = 1+0+1+1+1+2+1+3+1+4+1+5 = 21. > > > > > The total of ALL the digits range from 11 to 70. > > > > > Her is the code :- > > > > > > Option Explicit > > > > > Option Base 1 > > > > > > Sub Sum_Of_Digits() > > > > > Dim Start As Double > > > > > Start = Timer > > > > > Dim A As Integer > > > > > Dim B As Integer > > > > > Dim C As Integer > > > > > Dim D As Integer > > > > > Dim E As Integer > > > > > Dim F As Integer > > > > > Dim i As Integer > > > > > Dim nMinA As Integer > > > > > Dim nMaxF As Integer > > > > > Dim nType(70) As Double > > > > > > Application.ScreenUpdating = False > > > > > Sheets("Results").Select > > > > > Range("B4").Select > > > > > > nMinA = 1 > > > > > nMaxF = 49 > > > > > > For i = 11 To 70 > > > > > nType(i) = 0 > > > > > Next i > > > > > > For A = nMinA To nMaxF - 5 > > > > > For B = A + 1 To nMaxF - 4 > > > > > For C = B + 1 To nMaxF - 3 > > > > > For D = C + 1 To nMaxF - 2 > > > > > For E = D + 1 To nMaxF - 1 > > > > > For F = E + 1 To nMaxF > > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 1 Then nType(1) = nType(1) > > > > > + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 2 Then nType(2) = nType(2) > > > > > + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 3 Then nType(3) = nType(3) > > > > > + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 4 Then nType(4) = nType(4) > > > > > + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 5 Then nType(5) = nType(5) > > > > > + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 6 Then nType(6) = nType(6) > > > > > + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 7 Then nType(7) = nType(7) > > > > > + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 8 Then nType(8) = nType(8) > > > > > + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 9 Then nType(9) = nType(9) > > > > > + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 10 Then nType(10) = > > > > > nType(10) + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 11 Then nType(11) = > > > > > nType(11) + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 12 Then nType(12) = > > > > > nType(12) + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 13 Then nType(13) = > > > > > nType(13) + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 14 Then nType(14) = > > > > > nType(14) + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 15 Then nType(15) = > > > > > nType(15) + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 16 Then nType(16) = > > > > > nType(16) + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 17 Then nType(17) = > > > > > nType(17) + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 18 Then nType(18) = > > > > > nType(18) + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 19 Then nType(19) = > > > > > nType(19) + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 20 Then nType(20) = > > > > > nType(20) + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 21 Then nType(21) = > > > > > nType(21) + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 22 Then nType(22) = > > > > > nType(22) + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 23 Then nType(23) = > > > > > nType(23) + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 24 Then nType(24) = > > > > > nType(24) + 1 > > > > > If A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 > > > > > + D Mod 10 _ > > > > > + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 = 25 Then nType(25) = > > > > > nType(25) + 1 > > > > > If A \ 10 + A Mod 10 + B \- Hide quoted text - > > - Show quoted text -... > > read more >> |
|
||
|
||||
|
=?Utf-8?B?Sm9lbA==?=
Guest
Posts: n/a
|
nMinA = 1
nMaxF = 49 For i = nMinA to 9 nType(i) = 0 results(i) = i Next i For i = 10 To nMaxF nType(i) = 0 results(i) = Int(i \ 10) Next i "Paul Black" wrote: > Brilliant Joel, thanks very much. > > My final program on this is to calculate the first digits. > I know using Int(i \ 10) gives the correct results for numbers 10 to > 49 ( 1 to 4 ) but NOT for numbers 1 to 9, it gives zeros. I have > adapted the code to try and achieve this but it will not work. > Here is the code :- > > Option Explicit > Option Base 1 > Sub First_Digits() > Dim Start As Double > Start = Timer > Dim A As Integer > Dim B As Integer > Dim C As Integer > Dim D As Integer > Dim E As Integer > Dim F As Integer > Dim i As Integer > Dim nMinA As Integer > Dim nMaxF As Integer > Dim nType(9) As Double > Dim sum As Long > Application.ScreenUpdating = False > 'Sheets("Results").Select > Range("B4").Select > Dim results(49) As Long > > nMinA = 1 > nMaxF = 49 > > For i = 1 To 9 > nType(i) = 0 > Next i > > For i = nMinA To nMaxF > results(i) = Int(i \ 10) > Next i > > For A = nMinA To nMaxF - 5 > For B = A + 1 To nMaxF - 4 > For C = B + 1 To nMaxF - 3 > For D = C + 1 To nMaxF - 2 > For E = D + 1 To nMaxF - 1 > For F = E + 1 To nMaxF > > sum = results(A) + results(B) + results(C) + results(D) + results(E) > + results(F) > > nType(sum) = nType(sum) + 1 > > Next F > Next E > Next D > Next C > Next B > Next A > > For i = 1 To 9 > ActiveCell.Offset(0, 0).Value = "First Digits =" > ActiveCell.Offset(0, 1).Value = i > ActiveCell.Offset(0, 2).Value = nType(i) > ActiveCell.Offset(1, 0).Select > Next i > > ActiveCell.Offset(0, 0).Value = "Total Combinations Produced" > sum = 0 > For i = 1 To 9 > sum = sum + nType(i) > Next i > ActiveCell.Offset(0, 2).Value = sum > > ActiveCell.Offset(2, 0) = "This Program Took " & _ > Format(((Timer - Start) / 24 / 60 / 60), "hh:mm:ss") & " To > Process " > > Range("B68").Select > Application.ScreenUpdating = True > End Sub > > Thanks in Advance. > All the Best. > Paul > > On Nov 12, 8:11 pm, Joel <J...@discussions.microsoft.com> wrote: > > Paul: I think this is what Dana was suggesting. It runs 2x faster than my > > other code. > > > > Option Explicit > > Option Base 1 > > Sub Sum_Of_Digits() > > Dim Start As Double > > Start = Timer > > Dim A As Integer > > Dim B As Integer > > Dim C As Integer > > Dim D As Integer > > Dim E As Integer > > Dim F As Integer > > Dim i As Integer > > Dim nMinA As Integer > > Dim nMaxF As Integer > > Dim nType(70) As Double > > Dim sum As Long > > Application.ScreenUpdating = False > > Sheets("Results").Select > > Range("B4").Select > > Dim results(49) As Long > > > > nMinA = 1 > > nMaxF = 49 > > > > For i = 11 To 70 > > nType(i) = 0 > > Next i > > > > For i = nMinA To nMaxF > > results(i) = i \ 10 + i Mod 10 > > Next i > > > > For A = nMinA To nMaxF - 5 > > For B = A + 1 To nMaxF - 4 > > For C = B + 1 To nMaxF - 3 > > For D = C + 1 To nMaxF - 2 > > For E = D + 1 To nMaxF - 1 > > For F = E + 1 To nMaxF > > > > sum = results(A) + results(B) + results(C) + results(D) + results(E) + > > results(F) > > > > nType(sum) = nType(sum) + 1 > > > > Next F > > Next E > > Next D > > Next C > > Next B > > Next A > > > > For i = 11 To 70 > > ActiveCell.Offset(0, 0).Value = "Sum Of Digits =" > > ActiveCell.Offset(0, 1).Value = i > > ActiveCell.Offset(0, 2).Value = nType(i) > > ActiveCell.Offset(1, 0).Select > > Next i > > > > ActiveCell.Offset(0, 0).Value = "Total Combinations Produced" > > sum = 0 > > For i = 1 To 70 > > sum = sum + nType(i) > > Next i > > ActiveCell.Offset(0, 2).Value = sum > > > > ActiveCell.Offset(2, 0) = "This Program Took " & _ > > Format(((Timer - Start) / 24 / 60 / 60), "hh:mm:ss") & " To Process " > > > > Range("B68").Select > > Application.ScreenUpdating = True > > End Sub > > > > > > > > "PaulBlack" wrote: > > > Hi Joel & Dana, thanks for the replies. > > > > > Joel. > > > Your second code does indeed run faster than the first and produces > > > the correct results thank you. > > > > > Dana, > > > I have done as you suggested but can't get the code to work. This is > > > what I have :- > > > > > Option Explicit > > > Option Base 1 > > > > > Sub Sum_Of__Digits() > > > Dim A As Long, B As Long, C As Long > > > Dim D As Long, E As Long, F As Long > > > Dim R As Long > > > Dim nMinA As Integer > > > Dim nMaxF As Integer > > > Dim S As String > > > Dim StartTime As Double > > > Dim Total As Long > > > Dim n(1 To 49) As Long > > > Dim SumOfDigits(11 To 70) As Long > > > > > StartTime = Timer > > > > > nMinA = 1 > > > nMaxF = 49 > > > > > For R = 1 To 49 > > > n(R) = A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D > > > \ 10 _ > > > + D Mod 10 + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 > > > Next R > > > > > For A = nMinA To nMaxF - 5 > > > For B = A + 1 To nMaxF - 4 > > > For C = B + 1 To nMaxF - 3 > > > For D = C + 1 To nMaxF - 2 > > > For E = D + 1 To nMaxF - 1 > > > For F = E + 1 To nMaxF > > > R = n(A) + n(B) + n(C) + n(D) + n(E) + n(F) > > > SumOfDigits(R) = SumOfDigits(R) + 1 > > > Next F > > > Next E > > > Next D > > > Next C > > > Next B > > > Next A > > > > > For R = 11 To 70 > > > Cells(R + 1, 1) = R > > > Cells(R + 1, 2) = Format(SumOfDigits(R), "#,0") > > > Total = Total + SumOfDigits(R) > > > Next R > > > > > S = Format(Total, "#,0") > > > Cells(R + 1, 2) = S > > > > > Debug.Print Timer - StartTime > > > > > If Total = WorksheetFunction.Combin(49, 6) Then > > > MsgBox "Total is correct: " & S > > > Else > > > MsgBox "Error in Total: " & S > > > End If > > > > > End Sub > > > > > Thanks in Advance. > > > All the Best. > > >Paul > > > > > On Nov 12, 2:20 pm, Joel <J...@discussions.microsoft.com> wrote: > > > > Dana: Isn't what you are suggesting the same thing I posted in my code? > > > > > > sum = A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 _ > > > > + D Mod 10 + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 > > > > > > nType(sum) = nType(sum) + 1 > > > > > > "Dana DeLouis" wrote: > > > > > Another option would be similar to previous code. > > > > > The code is figuring out the sum of digits over and over. > > > > > Try doing it once per each of the 49 digits. > > > > > > > Dim n(1 To 49) As Long > > > > > > > ' Do Once Here > > > > > For R = 1 To 49 > > > > > n(R) = 'Sum of digits > > > > > Next R > > > > > > > Now...just add. :>) > > > > > a+b+c...ect > > > > > > > -- > > > > > Dana DeLouis > > > > > > > "PaulBlack" <paul_blac...@hotmail.com> wrote in message > > > > >news:(E-Mail Removed)... > > > > > > Hi everyone, > > > > > > > > Is there any way that the code below can be condensed or shortened > > > > > > please > > > > > > It cycles through six number combinations and counts the total of ALL > > > > > > the digits in each combination. So, combination 10,11,12,13,14,15 will > > > > > > = 1+0+1+1+1+2+1+3+1+4+1+5 = 21. > > > > > > The total of ALL the digits range from 11 to 70. > > > > > > Her is the code :- > > > > > > > > Option Explicit > > > > > > Option Base 1 > > > > > > > > Sub Sum_Of_Digits() > > > > > > Dim Start As Double > > > > > > Start = Timer > > > > > > Dim A As Integer > > > > > > Dim B As Integer > > > > > > Dim C As Integer > > > > > > Dim D As Integer > > > > > > Dim E As Integer > > > > > > Dim F As Integer > > > > > > Dim i As Integer > > > > > > Dim nMinA As Integer > > > > > > Dim nMaxF As Integer > > > > > > Dim nType(70) As Double > > > > > > > > Application.ScreenUpdating = False > > > > > > Sheets("Results").Select > > > > > > Range("B4").Select > > > > > > > > nMinA = 1 > > > > > > nMaxF = 49 > > |
|
||
|
||||
|
Paul Black
Guest
Posts: n/a
|
Thanks Joel,
The code now is ... Option Explicit Option Base 1 Sub First_Digits() Dim Start As Double Start = Timer Dim A As Integer Dim B As Integer Dim C As Integer Dim D As Integer Dim E As Integer Dim F As Integer Dim i As Integer Dim nMinA As Integer Dim nMaxF As Integer Dim nType(9) As Double Dim sum As Long Application.ScreenUpdating = False Range("B4").Select Dim results(49) As Long nMinA = 1 nMaxF = 49 For i = nMinA To 9 nType(i) = 0 results(i) = i Next i For i = 10 To nMaxF nType(i) = 0 results(i) = Int(i \ 10) Next i For A = nMinA To nMaxF - 5 For B = A + 1 To nMaxF - 4 For C = B + 1 To nMaxF - 3 For D = C + 1 To nMaxF - 2 For E = D + 1 To nMaxF - 1 For F = E + 1 To nMaxF sum = results(A) + results(B) + results(C) + results(D) + results(E) + results(F) nType(sum) = nType(sum) + 1 Next F Next E Next D Next C Next B Next A For i = 1 To 9 ActiveCell.Offset(0, 0).Value = "First Digits =" ActiveCell.Offset(0, 1).Value = i ActiveCell.Offset(0, 2).Value = nType(i) ActiveCell.Offset(1, 0).Select Next i ActiveCell.Offset(0, 0).Value = "Total Combinations Produced" sum = 0 For i = 1 To 9 sum = sum + nType(i) Next i ActiveCell.Offset(0, 2).Value = sum ActiveCell.Offset(2, 0) = "This Program Took " & _ Format(((Timer - Start) / 24 / 60 / 60), "hh:mm:ss") & " To Process " Range("B68").Select Application.ScreenUpdating = True End Sub .... but I keep getting an error on line ... nType(i) = 0 .... and if I edit it out I get an error on line ... nType(sum) = nType(sum) + 1 .... for some reason. Thanks in Advance. All the Best. Paul On Nov 17, 11:39 am, Joel <J...@discussions.microsoft.com> wrote: > nMinA = 1 > nMaxF = 49 > > For i = nMinA to 9 > nType(i) = 0 > results(i) = i > Next i > > For i = 10 To nMaxF > nType(i) = 0 > results(i) = Int(i \ 10) > Next i > > > > "PaulBlack" wrote: > > Brilliant Joel, thanks very much. > > > My final program on this is to calculate the first digits. > > I know using Int(i \ 10) gives the correct results for numbers 10 to > > 49 ( 1 to 4 ) but NOT for numbers 1 to 9, it gives zeros. I have > > adapted the code to try and achieve this but it will not work. > > Here is the code :- > > > Option Explicit > > Option Base 1 > > Sub First_Digits() > > Dim Start As Double > > Start = Timer > > Dim A As Integer > > Dim B As Integer > > Dim C As Integer > > Dim D As Integer > > Dim E As Integer > > Dim F As Integer > > Dim i As Integer > > Dim nMinA As Integer > > Dim nMaxF As Integer > > Dim nType(9) As Double > > Dim sum As Long > > Application.ScreenUpdating = False > > 'Sheets("Results").Select > > Range("B4").Select > > Dim results(49) As Long > > > nMinA = 1 > > nMaxF = 49 > > > For i = 1 To 9 > > nType(i) = 0 > > Next i > > > For i = nMinA To nMaxF > > results(i) = Int(i \ 10) > > Next i > > > For A = nMinA To nMaxF - 5 > > For B = A + 1 To nMaxF - 4 > > For C = B + 1 To nMaxF - 3 > > For D = C + 1 To nMaxF - 2 > > For E = D + 1 To nMaxF - 1 > > For F = E + 1 To nMaxF > > > sum = results(A) + results(B) + results(C) + results(D) + results(E) > > + results(F) > > > nType(sum) = nType(sum) + 1 > > > Next F > > Next E > > Next D > > Next C > > Next B > > Next A > > > For i = 1 To 9 > > ActiveCell.Offset(0, 0).Value = "First Digits =" > > ActiveCell.Offset(0, 1).Value = i > > ActiveCell.Offset(0, 2).Value = nType(i) > > ActiveCell.Offset(1, 0).Select > > Next i > > > ActiveCell.Offset(0, 0).Value = "Total Combinations Produced" > > sum = 0 > > For i = 1 To 9 > > sum = sum + nType(i) > > Next i > > ActiveCell.Offset(0, 2).Value = sum > > > ActiveCell.Offset(2, 0) = "This Program Took " & _ > > Format(((Timer - Start) / 24 / 60 / 60), "hh:mm:ss") & " To > > Process " > > > Range("B68").Select > > Application.ScreenUpdating = True > > End Sub > > > Thanks in Advance. > > All the Best. > >Paul > > > On Nov 12, 8:11 pm, Joel <J...@discussions.microsoft.com> wrote: > > >Paul: I think this is what Dana was suggesting. It runs 2x faster than my > > > other code. > > > > Option Explicit > > > Option Base 1 > > > Sub Sum_Of_Digits() > > > Dim Start As Double > > > Start = Timer > > > Dim A As Integer > > > Dim B As Integer > > > Dim C As Integer > > > Dim D As Integer > > > Dim E As Integer > > > Dim F As Integer > > > Dim i As Integer > > > Dim nMinA As Integer > > > Dim nMaxF As Integer > > > Dim nType(70) As Double > > > Dim sum As Long > > > Application.ScreenUpdating = False > > > Sheets("Results").Select > > > Range("B4").Select > > > Dim results(49) As Long > > > > nMinA = 1 > > > nMaxF = 49 > > > > For i = 11 To 70 > > > nType(i) = 0 > > > Next i > > > > For i = nMinA To nMaxF > > > results(i) = i \ 10 + i Mod 10 > > > Next i > > > > For A = nMinA To nMaxF - 5 > > > For B = A + 1 To nMaxF - 4 > > > For C = B + 1 To nMaxF - 3 > > > For D = C + 1 To nMaxF - 2 > > > For E = D + 1 To nMaxF - 1 > > > For F = E + 1 To nMaxF > > > > sum = results(A) + results(B) + results(C) + results(D) + results(E) + > > > results(F) > > > > nType(sum) = nType(sum) + 1 > > > > Next F > > > Next E > > > Next D > > > Next C > > > Next B > > > Next A > > > > For i = 11 To 70 > > > ActiveCell.Offset(0, 0).Value = "Sum Of Digits =" > > > ActiveCell.Offset(0, 1).Value = i > > > ActiveCell.Offset(0, 2).Value = nType(i) > > > ActiveCell.Offset(1, 0).Select > > > Next i > > > > ActiveCell.Offset(0, 0).Value = "Total Combinations Produced" > > > sum = 0 > > > For i = 1 To 70 > > > sum = sum + nType(i) > > > Next i > > > ActiveCell.Offset(0, 2).Value = sum > > > > ActiveCell.Offset(2, 0) = "This Program Took " & _ > > > Format(((Timer - Start) / 24 / 60 / 60), "hh:mm:ss") & " To Process " > > > > Range("B68").Select > > > Application.ScreenUpdating = True > > > End Sub > > > > "PaulBlack" wrote: > > > > Hi Joel & Dana, thanks for the replies. > > > > > Joel. > > > > Your second code does indeed run faster than the first and produces > > > > the correct results thank you. > > > > > Dana, > > > > I have done as you suggested but can't get the code to work. This is > > > > what I have :- > > > > > Option Explicit > > > > Option Base 1 > > > > > Sub Sum_Of__Digits() > > > > Dim A As Long, B As Long, C As Long > > > > Dim D As Long, E As Long, F As Long > > > > Dim R As Long > > > > Dim nMinA As Integer > > > > Dim nMaxF As Integer > > > > Dim S As String > > > > Dim StartTime As Double > > > > Dim Total As Long > > > > Dim n(1 To 49) As Long > > > > Dim SumOfDigits(11 To 70) As Long > > > > > StartTime = Timer > > > > > nMinA = 1 > > > > nMaxF = 49 > > > > > For R = 1 To 49 > > > > n(R) = A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D > > > > \ 10 _ > > > > + D Mod 10 + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 > > > > Next R > > > > > For A = nMinA To nMaxF - 5 > > > > For B = A + 1 To nMaxF - 4 > > > > For C = B + 1 To nMaxF - 3 > > > > For D = C + 1 To nMaxF - 2 > > > > For E = D + 1 To nMaxF - 1 > > > > For F = E + 1 To nMaxF > > > > R = n(A) + n(B) + n(C) + n(D) + n(E) + n(F) > > > > SumOfDigits(R) = SumOfDigits(R) + 1 > > > > Next F > > > > Next E > > > > Next D > > > > Next C > > > > Next B > > > > Next A > > > > > For R = 11 To 70 > > > > Cells(R + 1, 1) = R > > > > Cells(R + 1, 2) = Format(SumOfDigits(R), "#,0") > > > > Total = Total + SumOfDigits(R) > > > > Next R > > > > > S = Format(Total, "#,0") > > > > Cells(R + 1, 2) = S > > > > > Debug.Print Timer - StartTime > > > > > If Total = WorksheetFunction.Combin(49, 6) Then > > > > MsgBox "Total is correct: " & S > > > > Else > > > > MsgBox "Error in Total: " & S > > > > End If > > > > > End Sub > > > > > Thanks in Advance. > > > > All the Best. > > > >Paul > > > > > On Nov 12, 2:20 pm, Joel <J...@discussions.microsoft.com> wrote: > > > > > Dana: Isn't what you are suggesting the same thing I posted in my code? > > > > > > sum = A \ 10 + A Mod 10 + B \ 10 + B Mod 10 + C \ 10 + C Mod 10 + D \ 10 _ > > > > > + D Mod 10 + E \ 10 + E Mod 10 + F \ 10 + F Mod 10 > > > > > > nType(sum) = nType(sum) + 1 > > > > > > "Dana DeLouis" wrote: > > > > > > Another option would be similar to previous code. > > > > > > The code is figuring out the sum of digits over and over. > > > > > > Try doing it once per each of the 49 digits. > > > > > > > Dim n(1 To 49) As Long > > > > > > > ' Do Once Here > > > > > > For R = 1 To 49 > > > > > > n(R) = 'Sum of digits > > > > > > Next R > > > > > > > Now...just add. :>) > > > > > > a+b+c...ect > > > > > > > -- > > > > > > Dana DeLouis > > > > > > > "PaulBlack" <paul_blac...@hotmail.com> wrote in message > > > > > >news:(E-Mail Removed)... > > > > > > > Hi everyone, > > > > > > > > Is there any way that the code below can be condensed or shortened > > > > > > > please > > > > > > > It cycles through six number combinations and counts the total of ALL > > > > > > > the digits in each combination. So, combination 10,11,12,13,14,15 will > > > > > > > = 1+0+1+1+1+2+1+3+1+4+1+5 = 21. > > > > > > > The total of ALL the digits range from 11 to 70. > > > > > > > Her is the code :- > > > > > > > > Option Explicit > > > > > > > Option Base 1 > > > > > > > > Sub Sum_Of_Digits() > > > > > > > Dim Start As Double > > > > > > > Start = Timer > > > > > > > Dim A As Integer > > > > > > > Dim B As Integer > > > > > > > Dim C As Integer > > > > > > > Dim D As Integer > > > > > > > Dim E As Integer > > > > > > > Dim F As Integer > > > > > > > Dim i As Integer > > > > > > > Dim nMinA As Integer > > > > > > > Dim nMaxF As Integer > > > > > > > Dim nType(70) As Double > > > > > > > > Application.ScreenUpdating = False > > > > > > > Sheets("Results").Select > > > > > > > Range("B4").Select > > > > > > > > nMinA = 1 > > > > > > > nMaxF = 49- Hide quoted text - > > - Show quoted text - |
|
||
|
||||
|
|
|
| |
![]() |
| Thread Tools | |
| Rate This Thread | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Condensed Weekends | Captgww | Microsoft Outlook Calendar | 2 | 4th Sep 2008 05:00 PM |
| condensed page | =?Utf-8?B?YXJ0c2Nhcg==?= | Windows XP Performance | 0 | 10th Jul 2006 03:13 AM |
| Can this be condensed | Neil Atkinson | Microsoft Excel Programming | 4 | 12th Oct 2005 02:20 AM |
| Condensed List | =?Utf-8?B?bmV3Ymll?= | Microsoft Access Getting Started | 4 | 8th Jul 2005 05:32 PM |
| Storyboard is condensed | =?Utf-8?B?U3RvY2tjZXJ0cw==?= | Windows XP MovieMaker | 2 | 31st Aug 2004 01:05 PM |
Powered by vBulletin®. Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2010, Crawlability, Inc. |




