PC Review


Reply
Thread Tools Rate Thread

Can this Code be Condensed

 
 
Paul Black
Guest
Posts: n/a
 
      12th Nov 2007
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

 
Reply With Quote
 
 
 
 
=?Utf-8?B?Sm9lbA==?=
Guest
Posts: n/a
 
      12th Nov 2007
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) =

 
Reply With Quote
 
=?Utf-8?B?Sm9lbA==?=
Guest
Posts: n/a
 
      12th Nov 2007
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) =

 
Reply With Quote
 
Dana DeLouis
Guest
Posts: n/a
 
      12th Nov 2007
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
>

 
Reply With Quote
 
=?Utf-8?B?Sm9lbA==?=
Guest
Posts: n/a
 
      12th Nov 2007
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 _

 
Reply With Quote
 
Paul Black
Guest
Posts: n/a
 
      12th Nov 2007
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 -



 
Reply With Quote
 
=?Utf-8?B?Sm9lbA==?=
Guest
Posts: n/a
 
      12th Nov 2007
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) =

 
Reply With Quote
 
Paul Black
Guest
Posts: n/a
 
      17th Nov 2007
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 >>


 
Reply With Quote
 
=?Utf-8?B?Sm9lbA==?=
Guest
Posts: n/a
 
      17th Nov 2007
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

> >

 
Reply With Quote
 
Paul Black
Guest
Posts: n/a
 
      18th Nov 2007
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 -


 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


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


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 07:22 PM.