' Generates Eccentric Magic Squares (9 x 9)
' Overlapping Sub Squares

' Tested with Office 2007 under Windows 7

```Sub Priem9g1()

Dim a1(81), a(49), a7(49), a3(9), b1(81), b(81), c(49), c7(49), c3(9), a9(81)

y = MsgBox("Locked", vbCritical, "Routine Priem9g1")
End

n2 = 0: n3 = 0: n9 = 0: k1 = 1: k2 = 1

'   Generate squares

t1 = Timer

For j100 = 2 To 368
m9 = Sheets("Input3").Cells(j100, 9)
m8 = Sheets("Input3").Cells(j100, 8)

For jj9 = m9 To m9                                                     'a3(9)
If b(a1(jj9)) = 0 Then b(a1(jj9)) = a1(jj9): c3(9) = a1(jj9) Else GoTo 1090
a3(9) = a1(jj9)

For jj8 = m8 To m8                                                     'a3(8)
If b(a1(jj8)) = 0 Then b(a1(jj8)) = a1(jj8): c3(8) = a1(jj8) Else GoTo 1080
a3(8) = a1(jj8)

a3(7) = s3 - a3(8) - a3(9):
If a3(7) < a1(m1) Or a3(7) > a1(m2) Then GoTo 1070:
If b1(a3(7)) = 0 Then GoTo 1070
If b(a3(7)) = 0 Then b(a3(7)) = a3(7): c3(7) = a3(7) Else GoTo 1070

a3(6) = 4 * s3 / 3 - a3(8) - 2 * a3(9):
If a3(6) < a1(m1) Or a3(6) > a1(m2) Then GoTo 1060:
If b1(a3(6)) = 0 Then GoTo 1060
If b(a3(6)) = 0 Then b(a3(6)) = a3(6): c3(6) = a3(6) Else GoTo 1060

a3(5) = s3 / 3:
If a3(5) < a1(m1) Or a3(5) > a1(m2) Then GoTo 1050:
If b1(a3(5)) = 0 Then GoTo 1050
If b(a3(5)) = 0 Then b(a3(5)) = a3(5): c3(5) = a3(5) Else GoTo 1050

a3(4) = -2 * s3 / 3 + a3(8) + 2 * a3(9):
If a3(4) < a1(m1) Or a3(4) > a1(m2) Then GoTo 1040:
If b1(a3(4)) = 0 Then GoTo 1040
If b(a3(4)) = 0 Then b(a3(4)) = a3(4): c3(4) = a3(4) Else GoTo 1040

a3(3) = -s3 / 3 + a3(8) + a3(9):
If a3(3) < a1(m1) Or a3(3) > a1(m2) Then GoTo 1030:
If b1(a3(3)) = 0 Then GoTo 1030
If b(a3(3)) = 0 Then b(a3(3)) = a3(3): c3(3) = a3(3) Else GoTo 1030

a3(2) = 2 * s3 / 3 - a3(8):
If a3(2) < a1(m1) Or a3(2) > a1(m2) Then GoTo 1020:
If b1(a3(2)) = 0 Then GoTo 1020
If b(a3(2)) = 0 Then b(a3(2)) = a3(2): c3(2) = a3(2) Else GoTo 1020

a3(1) = 2 * s3 / 3 - a3(9):
If a3(1) < a1(m1) Or a3(1) > a1(m2) Then GoTo 1010:
If b1(a3(1)) = 0 Then GoTo 1010
If b(a3(1)) = 0 Then b(a3(1)) = a3(1): c3(1) = a3(1) Else GoTo 1010

'   Transform a3() to a9()

a9(1) = a3(9):   a9(2) = a3(7):   a9(3) = a3(8):
a9(10) = a3(3):  a9(11) = a3(1):  a9(12) = a3(2):
a9(19) = a3(6):  a9(20) = a3(4):

a7(25) = s2: b(s2) = s2

For j49 = m1 To (m2 - 1) / 2                                'a7(49)    Inlay
If b(a1(j49)) = 0 Then b(a1(j49)) = a1(j49): c7(49) = a1(j49) Else GoTo 490
a7(49) = a1(j49)

Cells(k1 + 1, 1).Select: Cells(k1 + 1, 1).Value = j49

a7(1) = 2 * s2 - a7(49): If b(a7(1)) = 0 Then b(a7(1)) = a7(1): c7(1) = a7(1) Else GoTo 10

For j46 = m1 To m2                                          'a7(46)     Inlay
If b(a1(j46)) = 0 Then b(a1(j46)) = a1(j46): c7(46) = a1(j46) Else GoTo 460
a7(46) = a1(j46)

Cells(k1 + 2, 1).Select: Cells(k1 + 2, 1).Value = j46

a7(43) = 3 * s2 - a7(46) - a7(49)
If a7(43) < a1(m1) Or a7(43) > a1(m2) Then GoTo 430
If b1(a7(43)) = 0 Then GoTo 430
If b(a7(43)) = 0 Then b(a7(43)) = a7(43): c7(43) = a7(43) Else GoTo 430

a7(28) = 4 * s2 - a7(46) - 2 * a7(49)
If a7(28) < a1(m1) Or a7(28) > a1(m2) Then GoTo 280
If b1(a7(28)) = 0 Then GoTo 280
If b(a7(28)) = 0 Then b(a7(28)) = a7(28): c7(28) = a7(28) Else GoTo 280

a7(22) = 2 * s2 - a7(28): If b(a7(22)) = 0 Then b(a7(22)) = a7(22): c7(22) = a7(22) Else GoTo 220
a7(7)  = 2 * s2 - a7(43): If b(a7(7))  = 0 Then b(a7(7))  = a7(7):  c7(7)  = a7(7)  Else GoTo 70
a7(4)  = 2 * s2 - a7(46): If b(a7(4))  = 0 Then b(a7(4))  = a7(4):  c7(4)  = a7(4)  Else GoTo 40

For j33 = m1 To m2                                          'a7(33)     Concentric
If b(a1(j33)) = 0 Then b(a1(j33)) = a1(j33): c7(33) = a1(j33) Else GoTo 330
a7(33) = a1(j33)

a7(17) = 2 * s2 - a7(33): If b(a7(17)) = 0 Then b(a7(17)) = a7(17): c7(17) = a7(17) Else GoTo 170

For j32 = m1 To m2                                          'a7(32)     Concentric
If b(a1(j32)) = 0 Then b(a1(j32)) = a1(j32): c7(32) = a1(j32) Else GoTo 320
a7(32) = a1(j32)

a7(31) = 3 * s2 - a7(32) - a7(33)
If a7(31) < a1(m1) Or a7(31) > a1(m2) Then GoTo 310
If b1(a7(31)) = 0 Then GoTo 310
If b(a7(31)) = 0 Then b(a7(31)) = a7(31): c7(31) = a7(31) Else GoTo 310

a7(26) = 4 * s2 - a7(32) - 2 * a7(33)
If a7(26) < a1(m1) Or a7(26) > a1(m2) Then GoTo 260
If b1(a7(26)) = 0 Then GoTo 260
If b(a7(26)) = 0 Then b(a7(26)) = a7(26): c7(26) = a7(26) Else GoTo 260

a7(24) = 2 * s2 - a7(26): If b(a7(24)) = 0 Then b(a7(24)) = a7(24): c7(24) = a7(24) Else GoTo 240
a7(19) = 2 * s2 - a7(31): If b(a7(19)) = 0 Then b(a7(19)) = a7(19): c7(19) = a7(19) Else GoTo 190
a7(18) = 2 * s2 - a7(32): If b(a7(18)) = 0 Then b(a7(18)) = a7(18): c7(18) = a7(18) Else GoTo 180

For j48 = m1 To m2                                          'a7(48)  Remainder
If b(a1(j48)) = 0 Then b(a1(j48)) = a1(j48): c7(48) = a1(j48) Else GoTo 480
a7(48) = a1(j48)

a7(45) = (s1 - 2 * a7(48) - a7(32) - 2 * a7(33)) / 2
If a7(45) < a1(m1) Or a7(45) > a1(m2) Or CInt(a7(45)) <> a7(45) Then GoTo 450
If b1(a7(45)) = 0 Then GoTo 450
If b(a7(45)) = 0 Then b(a7(45)) = a7(45): c7(45) = a7(45) Else GoTo 450

a7(40) = (9 * s2 - 2 * a7(48) - 2 * a7(32) - 2 * a7(33) - a7(46)) / 2
If a7(40) < a1(m1) Or a7(40) > a1(m2) Or CInt(a7(40)) <> a7(40) Then GoTo 400
If b1(a7(40)) = 0 Then GoTo 400
If b(a7(40)) = 0 Then b(a7(40)) = a7(40): c7(40) = a7(40) Else GoTo 400

a7(10) = 2 * s2 - a7(40): If b(a7(10)) = 0 Then b(a7(10)) = a7(10): c7(10) = a7(10) Else GoTo 100
a7(5)  = 2 * s2 - a7(45): If b(a7(5))  = 0 Then b(a7(5))  = a7(5):  c7(5)  = a7(5) Else GoTo 50
a7(2)  = 2 * s2 - a7(48): If b(a7(2))  = 0 Then b(a7(2))  = a7(2):  c7(2)  = a7(2) Else GoTo 20

For j47 = m1 To m2                                          'a7(47)
If b(a1(j47)) = 0 Then b(a1(j47)) = a1(j47): c7(47) = a1(j47) Else GoTo 470
a7(47) = a1(j47)

a7(44) = 4 * s2 - a7(45) - a7(47) - a7(48)
If a7(44) < a1(m1) Or a7(44) > a1(m2) Then GoTo 440
If b1(a7(44)) = 0 Then GoTo 440
If b(a7(44)) = 0 Then b(a7(44)) = a7(44): c7(44) = a7(44) Else GoTo 440

a7(38) = -s1 + a7(40) + a7(45) + a7(47) + 2 * a7(48) + a7(32) + 2 * a7(33)
If a7(38) < a1(m1) Or a7(38) > a1(m2) Then GoTo 380
If b1(a7(38)) = 0 Then GoTo 380
If b(a7(38)) = 0 Then b(a7(38)) = a7(38): c7(38) = a7(38) Else GoTo 380

a7(12) = 2 * s2 - a7(38): If b(a7(12)) = 0 Then b(a7(12)) = a7(12): c7(12) = a7(12) Else GoTo 120
a7(6)  = 2 * s2 - a7(44): If b(a7(6))  = 0 Then b(a7(6))  = a7(6):  c7(6)  = a7(6)  Else GoTo 60
a7(3)  = 2 * s2 - a7(47): If b(a7(3))  = 0 Then b(a7(3))  = a7(3):  c7(3)  = a7(3)  Else GoTo 30

For j42 = m1 To m2                                          'a7(42)
If b(a1(j42)) = 0 Then b(a1(j42)) = a1(j42): c7(42) = a1(j42) Else GoTo 420
a7(42) = a1(j42)

a7(34) = 3 * s2 - a7(40) - a7(42) - a7(48) + a7(49)
If a7(34) < a1(m1) Or a7(34) > a1(m2) Then GoTo 340
If b1(a7(34)) = 0 Then GoTo 340
If b(a7(34)) = 0 Then b(a7(34)) = a7(34): c7(34) = a7(34) Else GoTo 340

a7(29) = -3 * s2 + a7(42) + a7(45) + a7(48) + a7(33)
If a7(29) < a1(m1) Or a7(29) > a1(m2) Then GoTo 290
If b1(a7(29)) = 0 Then GoTo 290
If b(a7(29)) = 0 Then b(a7(29)) = a7(29): c7(29) = a7(29) Else GoTo 290

a7(21) = 2 * s2 - a7(29): If b(a7(21)) = 0 Then b(a7(21)) = a7(21): c7(21) = a7(21) Else GoTo 210
a7(16) = 2 * s2 - a7(34): If b(a7(16)) = 0 Then b(a7(16)) = a7(16): c7(16) = a7(16) Else GoTo 160
a7(8)  = 2 * s2 - a7(42): If b(a7(8))  = 0 Then b(a7(8))  = a7(8):  c7(8)  = a7(8)  Else GoTo 80

For j41 = m1 To m2                                          'a7(41)
If b(a1(j41)) = 0 Then b(a1(j41)) = a1(j41): c7(41) = a1(j41) Else GoTo 410
a7(41) = a1(j41)

a7(39) = 3 * s2 - a7(41) - 2 * a7(47) + a7(32) + a7(33) - a7(49)
If a7(39) < a1(m1) Or a7(39) > a1(m2) Then GoTo 390
If b1(a7(39)) = 0 Then GoTo 390
If b(a7(39)) = 0 Then b(a7(39)) = a7(39): c7(39) = a7(39) Else GoTo 390

a7(37) = -s1 + a7(41) + 2 * a7(47) + 2 * a7(48) + a7(46) + 2 * a7(49)
If a7(37) < a1(m1) Or a7(37) > a1(m2) Then GoTo 370
If b1(a7(37)) = 0 Then GoTo 370
If b(a7(37)) = 0 Then b(a7(37)) = a7(37): c7(37) = a7(37) Else GoTo 370

a7(36) = 9 * s2 - a7(41) - a7(42) - a7(45) - a7(47) - 2 * a7(48) - a7(33) - a7(49)
If a7(36) < a1(m1) Or a7(36) > a1(m2) Then GoTo 360
If b1(a7(36)) = 0 Then GoTo 360
If b(a7(36)) = 0 Then b(a7(36)) = a7(36): c7(36) = a7(36) Else GoTo 360

a7(35) = 6 * s2 - a7(41) - a7(42) - a7(47) - a7(48) - a7(49)
If a7(35) < a1(m1) Or a7(35) > a1(m2) Then GoTo 350
If b1(a7(35)) = 0 Then GoTo 350
If b(a7(35)) = 0 Then b(a7(35)) = a7(35): c7(35) = a7(35) Else GoTo 350

a7(30) = -9 * s2 + a7(40) + a7(41) + a7(42) + a7(45) + a7(47) + 3 * a7(48) + a7(32) + a7(33)
If a7(30) < a1(m1) Or a7(30) > a1(m2) Then GoTo 300
If b1(a7(30)) = 0 Then GoTo 300
If b(a7(30)) = 0 Then b(a7(30)) = a7(30): c7(30) = a7(30) Else GoTo 300

a7(27) = -5 * s2 + a7(41) + 2 * a7(42) + 2 * a7(47) + 2 * a7(48) - a7(32) - a7(33) + a7(49)
If a7(27) < a1(m1) Or a7(27) > a1(m2) Then GoTo 270
If b1(a7(27)) = 0 Then GoTo 270
If b(a7(27)) = 0 Then b(a7(27)) = a7(27): c7(27) = a7(27) Else GoTo 270

a7(23) = 2 * s2 - a7(27): If b(a7(23)) = 0 Then b(a7(23)) = a7(23): c7(23) = a7(23) Else GoTo 230
a7(20) = 2 * s2 - a7(30): If b(a7(20)) = 0 Then b(a7(20)) = a7(20): c7(20) = a7(20) Else GoTo 200
a7(15) = 2 * s2 - a7(35): If b(a7(15)) = 0 Then b(a7(15)) = a7(15): c7(15) = a7(15) Else GoTo 150
a7(14) = 2 * s2 - a7(36): If b(a7(14)) = 0 Then b(a7(14)) = a7(14): c7(14) = a7(14) Else GoTo 140
a7(13) = 2 * s2 - a7(37): If b(a7(13)) = 0 Then b(a7(13)) = a7(13): c7(13) = a7(13) Else GoTo 130
a7(11) = 2 * s2 - a7(39): If b(a7(11)) = 0 Then b(a7(11)) = a7(11): c7(11) = a7(11) Else GoTo 110
a7(9)  = 2 * s2 - a7(41): If b(a7(9))  = 0 Then b(a7(9))  = a7(9):  c7(9)  = a7(9)  Else GoTo 90

GoSub 750                                                              'Transform a7() to a9()

'   Complete Border

For j10 = m1 To m2
If b(a1(j10)) = 0 Then b(a1(j10)) = a1(j10): c(10) = a1(j10) Else GoTo 2100
a(10) = a1(j10)

a(14) = Pr3 - a(10): If b(a(14)) = 0 Then b(a(14)) = a(14): c(14) = a(14) Else GoTo 2140

For j11 = m1 To m2
If b(a1(j11)) = 0 Then b(a1(j11)) = a1(j11): c(11) = a1(j11) Else GoTo 2110
a(11) = a1(j11)

a(15) = Pr3 - a(11): If b(a(15)) = 0 Then b(a(15)) = a(15): c(15) = a(15) Else GoTo 2150

For j12 = m1 To m2
If b(a1(j12)) = 0 Then b(a1(j12)) = a1(j12): c(12) = a1(j12) Else GoTo 2120
a(12) = a1(j12)

a(16) = Pr3 - a(12): If b(a(16)) = 0 Then b(a(16)) = a(16): c(16) = a(16) Else GoTo 2160

a(13) = (s9 - s92) - a(12) - a(11) - a(10)
If a(13) < a1(m1) Or a(13) > a1(m2) Then GoTo 2130:
If b1(a(13)) = 0 Then GoTo 2130
If b(a(13)) = 0 Then b(a(13)) = a(13): c(13) = a(13) Else GoTo 2130

a(17) = Pr3 - a(13): If b(a(17)) = 0 Then b(a(17)) = a(17): c(17) = a(17) Else GoTo 2170

a(18) = s3 - a(13) - a(16)
If a(18) < a1(m1) Or a(18) > a1(m2) Then GoTo 2180:
If b1(a(18)) = 0 Then GoTo 2180
If b(a(18)) = 0 Then b(a(18)) = a(18): c(18) = a(18) Else GoTo 2180

a(20) = Pr3 - a(18): If b(a(20)) = 0 Then b(a(20)) = a(20): c(20) = a(20) Else GoTo 2200

a(19) = s3 - a(10) - a(15)
If a(19) < a1(m1) Or a(19) > a1(m2) Then GoTo 2190:
If b1(a(19)) = 0 Then GoTo 2190
If b(a(19)) = 0 Then b(a(19)) = a(19): c(19) = a(19) Else GoTo 2190

a(21) = Pr3 - a(19): If b(a(21)) = 0 Then b(a(21)) = a(21): c(21) = a(21) Else GoTo 2210

'   Remaining Magic Rectangles

For j22 = m1 To m2
If b(a1(j22)) = 0 Then b(a1(j22)) = a1(j22): c(22) = a1(j22) Else GoTo 2220
a(22) = a1(j22)

a(25) = Pr3 - a(22): If b(a(25)) = 0 Then b(a(25)) = a(25): c(25) = a(25) Else GoTo 2250

For j23 = m1 To m2
If b(a1(j23)) = 0 Then b(a1(j23)) = a1(j23): c(23) = a1(j23) Else GoTo 2230
a(23) = a1(j23)

a(26) = Pr3 - a(23): If b(a(26)) = 0 Then b(a(26)) = a(26): c(26) = a(26) Else GoTo 2260

a(24) = s3 - a(22) - a(23)
If a(24) < a1(m1) Or a(24) > a1(m2) Then GoTo 2240:
If b1(a(24)) = 0 Then GoTo 2240
If b(a(24)) = 0 Then b(a(24)) = a(24): c(24) = a(24) Else GoTo 2240

a(27) = Pr3 - a(24): If b(a(27)) = 0 Then b(a(27)) = a(27): c(27) = a(27) Else GoTo 2270

For j28 = m1 To m2
If b(a1(j28)) = 0 Then b(a1(j28)) = a1(j28): c(28) = a1(j28) Else GoTo 2280
a(28) = a1(j28)

a(31) = Pr3 - a(28): If b(a(31)) = 0 Then b(a(31)) = a(31): c(31) = a(31) Else GoTo 2310

For j29 = m1 To m2
If b(a1(j29)) = 0 Then b(a1(j29)) = a1(j29): c(29) = a1(j29) Else GoTo 2290
a(29) = a1(j29)

a(32) = Pr3 - a(29): If b(a(32)) = 0 Then b(a(32)) = a(32): c(32) = a(32) Else GoTo 2320

a(30) = s3 - a(28) - a(29)
If a(30) < a1(m1) Or a(30) > a1(m2) Then GoTo 2300:
If b1(a(30)) = 0 Then GoTo 2300
If b(a(30)) = 0 Then b(a(30)) = a(30): c(30) = a(30) Else GoTo 2300

a(33) = Pr3 - a(30): If b(a(33)) = 0 Then b(a(33)) = a(33): c(33) = a(33) Else GoTo 2330

a9(9) = a(10): a9(18) = a(14)
a9(17) = a(11): a9(8) = a(15)
a9(65) = a(12): a9(64) = a(16)
a9(73) = a(13): a9(74) = a(17)
a9(55) = a(18): a9(56) = a(20)
a9(7) = a(19): a9(16) = a(21)

a9(4) = a(22):  a9(5) = a(23):  a9(6) = a(24):
a9(13) = a(25): a9(14) = a(26): a9(15) = a(27):

a9(46) = a(28): a9(37) = a(29): a9(28) = a(30):
a9(47) = a(31): a9(38) = a(32): a9(29) = a(33):

GoSub 800:                     'Back Check Identical Numbers a9()
If fl1 = 0 Then GoTo 5

n9 = n9 + 1: GoSub 650         'Print Results    a9()

Erase b, c, c3, c7
GoTo 1500                      'Print only first square

5

b(c(33)) = 0: c(33) = 0
2330 b(c(30)) = 0: c(30) = 0
2300 b(c(32)) = 0: c(32) = 0
2320 b(c(29)) = 0: c(29) = 0
2290 Next j29

b(c(31)) = 0: c(31) = 0
2310 b(c(28)) = 0: c(28) = 0
2280 Next j28

b(c(27)) = 0: c(27) = 0
2270 b(c(24)) = 0: c(24) = 0
2240 b(c(26)) = 0: c(26) = 0
2260 b(c(23)) = 0: c(23) = 0
2230 Next j23

b(c(25)) = 0: c(25) = 0
2250 b(c(22)) = 0: c(22) = 0
2220 Next j22

b(c(21)) = 0: c(21) = 0
2210 b(c(19)) = 0: c(19) = 0
2190 b(c(20)) = 0: c(20) = 0
2200 b(c(18)) = 0: c(18) = 0
2180 b(c(17)) = 0: c(17) = 0
2170 b(c(13)) = 0: c(13) = 0
2130 b(c(16)) = 0: c(16) = 0
2160 b(c(12)) = 0: c(12) = 0
2120 Next j12

b(c(15)) = 0: c(15) = 0
2150 b(c(11)) = 0: c(11) = 0
2110 Next j11

b(c(14)) = 0: c(14) = 0
2140 b(c(10)) = 0: c(10) = 0
2100 Next j10

b(c7(9)) = 0:  c7(9) = 0
90  b(c7(11)) = 0: c7(11) = 0
110 b(c7(13)) = 0: c7(13) = 0
130 b(c7(14)) = 0: c7(14) = 0
140 b(c7(15)) = 0: c7(15) = 0
150 b(c7(20)) = 0: c7(20) = 0
200 b(c7(23)) = 0: c7(23) = 0
230 b(c7(27)) = 0: c7(27) = 0
270 b(c7(30)) = 0: c7(30) = 0
300 b(c7(35)) = 0: c7(35) = 0
350 b(c7(36)) = 0: c7(36) = 0
360 b(c7(37)) = 0: c7(37) = 0
370 b(c7(39)) = 0: c7(39) = 0
390 b(c7(41)) = 0: c7(41) = 0
410 Next j41

b(c7(8)) = 0: c7(8) = 0
80  b(c7(16)) = 0: c7(16) = 0
160 b(c7(21)) = 0: c7(21) = 0
210 b(c7(29)) = 0: c7(29) = 0
290 b(c7(34)) = 0: c7(34) = 0
340 b(c7(42)) = 0: c7(42) = 0
420 Next j42

b(c7(3)) = 0: c7(3) = 0
30  b(c7(6)) = 0: c7(6) = 0
60  b(c7(12)) = 0: c7(12) = 0
120 b(c7(38)) = 0: c7(38) = 0
380 b(c7(44)) = 0: c7(44) = 0
440 b(c7(47)) = 0: c7(47) = 0
470 Next j47

b(c7(2)) = 0: c7(2) = 0
20  b(c7(5)) = 0: c7(5) = 0
50  b(c7(10)) = 0: c7(10) = 0
100 b(c7(40)) = 0: c7(40) = 0
400 b(c7(45)) = 0: c7(45) = 0
450 b(c7(48)) = 0: c7(48) = 0
480 Next j48

b(c7(18)) = 0: c7(18) = 0
180 b(c7(19)) = 0: c7(19) = 0
190 b(c7(24)) = 0: c7(24) = 0
240 b(c7(26)) = 0: c7(26) = 0
260 b(c7(31)) = 0: c7(31) = 0
310 b(c7(32)) = 0: c7(32) = 0
320 Next j32

b(c7(17)) = 0: c7(17) = 0
170 b(c7(33)) = 0: c7(33) = 0
330 Next j33

b(c7(4)) = 0: c7(4) = 0
40  b(c7(7)) = 0: c7(7) = 0
70  b(c7(22)) = 0: c7(22) = 0
220 b(c7(28)) = 0: c7(28) = 0
280 b(c7(43)) = 0: c7(43) = 0
430 b(c7(46)) = 0: c7(46) = 0
460 Next j46

b(c7(1)) = 0: c7(1) = 0
10  b(c7(49)) = 0: c7(49) = 0
490 Next j49

b(c3(1)) = 0: c3(1) = 0
1010 b(c3(2)) = 0: c3(2) = 0
1020 b(c3(3)) = 0: c3(2) = 0
1030 b(c3(4)) = 0: c3(4) = 0
1040 b(c3(5)) = 0: c3(5) = 0
1050 b(c3(6)) = 0: c3(6) = 0
1060 b(c3(7)) = 0: c3(7) = 0
1070 b(c3(8)) = 0: c3(8) = 0
1080 Next jj8

b(c3(9)) = 0: c3(9) = 0
1090 Next jj9

1500 Next j100

t2 = Timer

t10 = Str(t2 - t1) + " sec., " + Str(n9) + " Solutions for sum" + Str(s1)
y = MsgBox(t10, 0, "Routine Priem9g1")

End

'   Print results (selected numbers)

645 For i1 = 1 To 49
Cells(n9, i1).Value = a7(i1)
Next i1

Return

'   Transform a7() to a9()

750
a9(21) = a7(25): a9(22) = a7(26): a9(23) = a7(27): a9(24) = a7(28): a9(25) = a7(22): a9(26) = a7(23): a9(27) = a7(24):
a9(30) = a7(32): a9(31) = a7(33): a9(32) = a7(34): a9(33) = a7(35): a9(34) = a7(29): a9(35) = a7(30): a9(36) = a7(31):
a9(39) = a7(39): a9(40) = a7(40): a9(41) = a7(41): a9(42) = a7(42): a9(43) = a7(36): a9(44) = a7(37): a9(45) = a7(38):
a9(48) = a7(46): a9(49) = a7(47): a9(50) = a7(48): a9(51) = a7(49): a9(52) = a7(43): a9(53) = a7(44): a9(54) = a7(45):
a9(57) = a7(4):  a9(58) = a7(5):  a9(59) = a7(6):  a9(60) = a7(7):  a9(61) = a7(1):  a9(62) = a7(2):  a9(63) = a7(3):
a9(66) = a7(11): a9(67) = a7(12): a9(68) = a7(13): a9(69) = a7(14): a9(70) = a7(8):  a9(71) = a7(9):  a9(72) = a7(10):
a9(75) = a7(18): a9(76) = a7(19): a9(77) = a7(20): a9(78) = a7(21): a9(79) = a7(15): a9(80) = a7(16): a9(81) = a7(17):

s92 = a9(25) + a9(33) + a9(41) + a9(49) + a9(57)

Return

'   Print results (squares)

650  n2 = n2 + 1
If n2 = 5 Then
n2 = 1: k1 = k1 + 10: k2 = 1
Else
If n9 > 1 Then k2 = k2 + 10
End If
Cells(k1 + 1, k2 + 1).Select

Cells(k1, k2 + 1).Select
Cells(k1, k2 + 1).Font.Color = -4165632
Cells(k1, k2 + 1).Value = n9

i3 = 0
For i1 = 1 To 9
For i2 = 1 To 9
i3 = i3 + 1
Cells(k1 + i1, k2 + i2).Value = a9(i3)
Next i2
Next i1

Return

'   Double Check Identical Numbers a9()

800 fl1 = 1
For j1 = 1 To 81
a20 = a9(j1): If a20 = 0 Then GoTo 810
For j2 = (1 + j1) To 81
If a20 = a9(j2) Then fl1 = 0: Return
Next j2
810 Next j1
Return

2500 m1 = 1: m2 = 81: s1 = 287: s2 = 41: s3 = 123: Pr3 = 82: s9 = 369

For i1 = m1 To m2
a1(i1) = i1
Next i1

Erase b1
For i1 = m1 To m2
b1(a1(i1)) = a1(i1)
Next i1
Return

End Sub
```