プログラム的には、一番難しいかもしれません。
何故なら、3重のループになるからです。
でもまず、ループを意識しないで、ループなしで考えてみましょう。
(実は、ループなしだと、とても大変なのですが・・・)
- 小さいほうの数字を入れる変数を宣言します。
Dim Smaller As Long '小さいほうの数字
- 2番目の数字から始めます。
自分(今は2番目の数字)の前の数字は、1番目の数字です。
1番目の数字と大小比較します。
If Cells(1, 2) < Cells(1, 1) Then '2番目の数字が1番目の数字未満なら
自分は1番目に入り、もとの1番目の数字は1つ後ろにずれます。
Smaller = Cells(1, 2) '小さいほうの数字 ← 2番目の数字
Cells(1, 2) = Cells(1, 1) '2番目 ← 1番目の数字
Cells(1, 1) = Smaller '1番目 ← 小さいほうの数字
End If '自分のほうが大きい場合は、何もしない
- 次は、3番目の数字です。
自分(3番目の数字)と1番目の数字とを、大小比較します。
If Cells(1, 3) < Cells(1, 1) Then '3番目の数字が1番目の数字未満なら
自分は1番目に入り、もとの1〜2番目の数字は1つずつ後ろにずれます。
Smaller = Cells(1, 3) '小さいほうの数字 ← 3番目の数字
Cells(1, 3) = Cells(1, 2) '3番目 ← 2番目の数字
Cells(1, 2) = Cells(1, 1) '2番目 ← 1番目の数字
Cells(1, 1) = Smaller '1番目 ← 小さいほうの数字
Else '自分のほうが大きい場合は、次へ
- 3番目の数字が1番目の数字より大きい場合、2番目の数字と大小比較します。
If Cells(1, 3) < Cells(1, 2) Then '3番目の数字が2番目の数字未満なら
自分は2番目に入り、もとの2番目の数字は1つ後ろにずれます。
Smaller = Cells(1, 3) '小さいほうの数字 ← 3番目の数字
Cells(1, 3) = Cells(1, 2) '3番目 ← 2番目の数字
Cells(1, 2) = Smaller '2番目 ← 小さいほうの数字
End If '自分のほうが大きい場合は、何もしない
End If 'If と End If の数を合わせること
- 4番目の数字の番です。
自分(4番目の数字)と1番目の数字とを、大小比較します。
If Cells(1, 4) < Cells(1, 1) Then '4番目の数字が1番目の数字未満なら
自分は1番目に入り、もとの1〜3番目の数字は1つずつ後ろにずれます。
Smaller = Cells(1, 4) '小さいほうの数字 ← 4番目の数字
Cells(1, 4) = Cells(1, 3) '4番目 ← 3番目の数字
Cells(1, 3) = Cells(1, 2) '3番目 ← 2番目の数字
Cells(1, 2) = Cells(1, 1) '2番目 ← 1番目の数字
Cells(1, 1) = Smaller '1番目 ← 小さいほうの数字
Else '自分のほうが大きい場合は、次へ
- 4番目の数字が1番目の数字より大きい場合、2番目の数字と大小比較します。
If Cells(1, 4) < Cells(1, 2) Then '4番目の数字が2番目の数字未満なら
自分は2番目に入り、もとの2〜3番目の数字は1つずつ後ろにずれます。
Smaller = Cells(1, 4) '小さいほうの数字 ← 4番目の数字
Cells(1, 4) = Cells(1, 3) '4番目 ← 3番目の数字
Cells(1, 3) = Cells(1, 2) '3番目 ← 2番目の数字
Cells(1, 2) = Smaller '2番目 ← 小さいほうの数字
Else '自分のほうが大きい場合は、次へ
- 4番目の数字が2番目の数字より大きい場合、3番目の数字と大小比較します。
If Cells(1, 4) < Cells(1, 3) Then '4番目の数字が3番目の数字未満なら
自分は3番目に入り、もとの3番目の数字は1つ後ろにずれます。
Smaller = Cells(1, 4) '小さいほうの数字 ← 4番目の数字
Cells(1, 4) = Cells(1, 3) '4番目 ← 3番目の数字
Cells(1, 3) = Smaller '3番目 ← 小さいほうの数字
End If '自分のほうが大きい場合は、何もしない
End If 'If と End If の数を合わせること
End If 'If と End If の数を合わせること
説明は、ここまでにします。
5番目の数字の場合どうするかは、各自で考えて完成させてください。
さらには Do 〜 Loop を使って、5つの数字でなく、もっとたくさんの数字の並び替えができるようにしてください。
3重のループになると書きましたが、まずは1重のループから考えてみてください。
ヒントは・・・ここ↓
Smaller = Cells(1, 4) '小さいほうの数字 ← 4番目の数字
Cells(1, 4) = Cells(1, 3) '4番目 ← 3番目の数字
Cells(1, 3) = Cells(1, 2) '3番目 ← 2番目の数字
Cells(1, 2) = Cells(1, 1) '2番目 ← 1番目の数字
Cells(1, 1) = Smaller '1番目 ← 小さいほうの数字
1つずつ ずらすところですね。
もう1つヒントを。
今までは、ループカウンター(i など)を 1 ずつ足していきましたが、今回は 1 ずつ引いていってください。
それでは、また次回まで!
|