| 
    
     |  | ▼やまだ さん: >1
 >2
 >3         9 2 3
 >4  ⇒      8 1 4
 >5         7 6 5
 >6
 >7
 >8
 >9
 >
 >簡単に言えば、こんな感じです。
 
 あっ、そういうことですか?
 
 即興なので、イマイチ気に入らないのですが・・・。
 '===========================================================
 Sub main()
 Dim g0 As Long
 Dim stt As Long
 Dim rng As Range
 Set rng = Range("g20")
 stt = 1
 For g0 = 1 To 20
 rng.Value = g0
 Set rng = get_rng(rng, stt)
 Next
 End Sub
 '===========================================================
 Function get_rng(ByVal rng, stt As Long) As Range
 Dim mx
 ReDim cnt(1 To 4) As Long
 ReDim chk(1 To 4) As Range
 ReDim locate(1 To 4) As Long
 Dim c As Long
 Dim g0 As Long
 Dim g1 As Long
 Dim g2 As Long
 For g0 = stt To (stt + 3)
 Select Case g0 Mod 4
 Case 1
 Set chk(c + 1) = rng.Offset(-1, 0)
 locate(c + 1) = 1
 Case 2
 Set chk(c + 1) = rng.Offset(0, 1)
 locate(c + 1) = 2
 Case 3
 Set chk(c + 1) = rng.Offset(1, 0)
 locate(c + 1) = 3
 Case 0
 Set chk(c + 1) = rng.Offset(0, -1)
 locate(c + 1) = 4
 End Select
 If chk(c + 1).Value = "" Then
 For g1 = -1 To 1
 For g2 = -1 To 1
 If g1 <> 0 Or g2 <> 0 Then
 If chk(c + 1).Offset(g1, g2).Value <> "" Then
 cnt(c + 1) = cnt(c + 1) + 1
 End If
 End If
 Next
 Next
 End If
 c = c + 1
 Next
 With Application
 g0 = .Match(.Max(cnt()), cnt(), 0)
 End With
 Set get_rng = chk(g0)
 stt = locate(g0)
 End Function
 
 
 >ちなみに、エクセルファイルってここに載せれるんですか?
 ここは、出来ないですね!!
 でも、だから勉強になるんですよ!!
 ここに自分が知りたいことや知っていることを記述するのは大変なことです。
 
 その大変なことをここでやろうとするから、上達するんです。
 
 と、私は思っています。
 
 |  |