几年前问过一个螺旋数列的问题,可是没人回答。现在写个,支持任总数字的。先清空表,在[a1]输入数列的最后一个数字,比如16;在[a2]输入起点位置,比如h15.
Sub aa()
n = [a1]
qd = [a2]
Range(qd) = 1
a = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
b = Array(0, 0, 0, 0, 0, -11, -1, -11, 0, 1, 11, 11, 0, 1, -1, 1)
x = Range(qd).Column
y = Range(qd).Row
For i = 1 To n - 1
s = 0
If Cells(y - 1, x) = "" Then s = s + 1
If Cells(y + 1, x) = "" Then s = s + 2
If Cells(y, x - 1) = "" Then s = s + 4
If Cells(y, x + 1) = "" Then s = s + 8
t1 = Abs(b(s)): t2 = b(s) Mod 10
If t1 > 1 Then y = y + t2 Else x = x + t2
Cells(y, x) = i + 1
Next
End Sub |