前回は、3重のループでしたが、今回は・・・さて?
でも前回と同様、まず、ループを意識しないで、ループなしで考えてみましょう。
- 一番小さい数字用の変数を宣言します。
Dim min_suji As Integer '一番小さい数字
Dim min_no As Integer '一番小さい数字が何番目か
- 1番目の数字から始めます。
まず1番目の数字が一番小さいと仮定します。
一番小さい数字の情報を、変数 min_suji, min_no にセットします。
min_suji = Cells(1, 1) 'min_suji ← 1番目の数字
min_no = 1 'min_no ← 1(番目)
- 後ろの一番小さい数字を探します。
自分(今は1番目の数字)の後ろの数字は、2〜5番目の数字です。
- 2番目の数字と一番小さい数字を比較します。
If Cells(1, 2) < min_suji Then
もし2番目の数字のほうが小さいなら、2番目の数字の情報を、変数 min_suji, min_no にセットします。
min_suji = Cells(1, 2) 'min_suji ← 2番目の数字
min_no = 2 'min_no ← 2(番目)
End If '2番目のほうが大きい場合は、何もしない
- 3番目の数字と一番小さい数字を比較します。
If Cells(1, 3) < min_suji Then
もし2番目の数字のほうが小さいなら、3番目の数字の情報を、変数 min_suji, min_no にセットします。
min_suji = Cells(1, 3) 'min_suji ← 3番目の数字
min_no = 3 'min_no ← 3(番目)
End If '3番目のほうが大きい場合は、何もしない
- 4番目の数字と一番小さい数字を比較します。
If Cells(1, 4) < min_suji Then
もし4番目の数字のほうが小さいなら、4番目の数字の情報を、変数 min_suji, min_no にセットします。
min_suji = Cells(1, 4) 'min_suji ← 4番目の数字
min_no = 4 'min_no ← 4(番目)
End If '4番目のほうが大きい場合は、何もしない
- 5番目の数字と一番小さい数字を比較します。
If Cells(1, 5) < min_suji Then
もし5番目の数字のほうが小さいなら、5番目の数字の情報を、変数 min_suji, min_no にセットします。
min_suji = Cells(1, 5) 'min_suji ← 5番目の数字
min_no = 5 'min_no ← 5(番目)
End If '5番目のほうが大きい場合は、何もしない
はい、これで一番小さい数字が、わかりましたね。
- 自分(今は1番目の数字)と、一番小さい数字を、大小比較します。
If Cells(1, 1) < min_suji Then
- 1番目の数字が一番小さい数字未満なら、一番小さい数字は1番目に入り、一番小さい数字より前の数字は1つずつ後ろにずれます。
If min_no = 5 Then
'一番小さい数字が5番目なら、4番目の数字は5番目にずれます。
Cells(1, 5) = Cells(1, 4) '5番目 ← 4番目の数字
End If '5番目でないなら、何もしない
If min_no => 4 Then
'一番小さい数字が4番目以降なら、3番目の数字は4番目にずれます。
Cells(1, 4) = Cells(1, 3) '4番目 ← 3番目の数字
End If '4番目以降でないなら、何もしない
If min_no => 3 Then
'一番小さい数字が3番目以降なら、2番目の数字は3番目にずれます。
Cells(1, 3) = Cells(1, 2) '3番目 ← 2番目の数字
End If '3番目以降でないなら、何もしない
'一番小さい数字は、当然2番目以降なので、1番目の数字は2番目にずれます。
Cells(1, 2) = Cells(1, 1) '2番目 ← 1番目の数字
'一番小さい数字は、1番目に入ります。
Cells(1, 1) = min_suji '1番目 ← 一番小さい数字
End If '自分のほうが大きい場合は、何もしない
ふう、やっぱ ループを使わないのって、大変だ。
よって、説明は、ここまでにします。
まだ1番目の数字しか処理していませんが、1番目の数字が一番大変です。
あと、2〜4番目の数字の処理は、皆様が考えてください。
「え? 5番目の数字の処理は?」
と言う人がいたら・・・最後の数字の後ろに、いったいどんな数字があるのか、教えてください。(笑)
また Do 〜 Loop を使って、5つの数字でなく、もっとたくさんの数字の並び替えができるようにしてください。
さて何重のループになるでしょうか?
まずは1重のループから考えてみてください。
ヒントは・・・一番小さい数字を探すところと、1つずつ数字をずらすところから、やってみてね。
それぞれ別のループになりますよ。
|