|
少し時間ができましたので、コメントしておきます。
まずはインデントをしっかりつけることをお勧めします。
理解しやすさ、デバッグのしやすさが断然違うはずです。
Sub 配列A()
Dim i As Integer
Dim j As Integer
Dim n As Integer
Dim m As Integer
For i = 1 To 2
j = Int(((4 - 1 + 1) * Rnd) + 1)
If i = 2 Then
Do While Cells(i - 1, 1).Value = j
j = Int(((4 - 1 + 1) * Rnd) + 1)
Loop
End If
Cells(i, 1).Value = j
Next i
For n = 3 To 24
If (Cells(n - 2, 1).Value = 3) And (Cells(n - 1, 1).Value = 2) Then
Cells(n, 1).Value = 4
End If
If (Cells(n - 2, 1).Value = 3) And (Cells(n - 1, 1).Value = 4) Then
Cells(n, 1).Value = 2
End If
If (Cells(n - 2, 1).Value = 4) And (Cells(n - 1, 1).Value = 1) Then
Cells(n, 1).Value = 3
End If
If (Cells(n - 2, 1).Value = 1) And (Cells(n - 1, 1).Value = 2) Then
Cells(n, 1).Value = 1
End If
If (Cells(n - 2, 1).Value = 2) And (Cells(n - 1, 1).Value = 4) Then
Cells(n, 1).Value = 1
End If
If (Cells(n - 2, 1).Value = 4) And (Cells(n - 1, 1).Value = 3) Then
Cells(n, 1).Value = 2
End If
If (Cells(n - 2, 1).Value = 3) And (Cells(n - 1, 1).Value = 1) Then
Cells(n, 1).Value = 2
End If
If (Cells(n - 2, 1).Value = 1) And (Cells(n - 1, 1).Value = 4) Then
Cells(n, 1).Value = 3
End If
If (Cells(n - 2, 1).Value = 4) And (Cells(n - 1, 1).Value = 2) Then
Cells(n, 1).Value = 3
End If
If (Cells(n - 2, 1).Value = 2) And (Cells(n - 1, 1).Value = 1) Then
Cells(n, 1).Value = 4
End If
If (Cells(n - 2, 1).Value = 1) And (Cells(n - 1, 1).Value = 3) Then
Cells(n, 1).Value = 4
End If
Next n
End Sub
結果が得られることが最大の目的ですので、これはこれでよいのですが、
細かいことを申し上げれば、次の2点が浮かびます。
(1)Cells(n - 2, 1).Value とCells(n - 1, 1).Valueがたくさん出てきて見にくいです。
Don't Repeat Yourself(同じ事を繰り返すな)ということを言いますが、
例えば、変数でいったん受けてから、判定をすれば、もっと見やすくなるでしょう。
a = Cells(n - 2, 1).Value
b = Cells(n - 1, 1).Value
If a = 3 And b = 2 Then Cells(n, 1).Value = 4
If a = 3 And b = 4 Then Cells(n, 1).Value = 2
・・・・・
(2)マッチしたとしても、その後も続けて最後まで判定するので無駄です。
なにか工夫が必要でしょう。
次の投稿を見て参考にしてください。
|
|