以下の数字を昇順で並び替えるという課題が出ました。
19
12
34
8
15
3
条件としては今まで使った知識でコードを書く必要があり、for文・if分・Do Whileなどが現在使えます。
自分で考えてみた所、if文で、21と12を比較して小さければ入れ替えて、それをfor文で繰り返していってだと思うのですが、
それをコードで現すとなると現段階の自分の知識では思いつきません。
ネットで配列というものを見たのですが習っていないので使えません...
追記
・かける所までコードを書きました。
Sub test4() Dim a, b, c, d, e, f, g, h, i As Long a = 1 If Cells(1, 1) > Cells(2, 1) Then f = Cells(1, 1) Cells(1, 1) = Cells(2, 1) Cells(2, 1) = f End If If Cells(2, 1) > Cells(3, 1) Then g = Cells(2, 1) Cells(2, 1) = Cells(3, 1) Cells(3, 1) = f End If If Cells(3, 1) > Cells(4, 1) Then g = Cells(3, 1) Cells(3, 1) = Cells(4, 1) Cells(4, 1) = f End If If Cells(4, 1) > Cells(5, 1) Then g = Cells(4, 1) Cells(4, 1) = Cells(5, 1) Cells(5, 1) = f End If If Cells(5, 1) > Cells(6, 1) Then g = Cells(5, 1) Cells(5, 1) = Cells(6, 1) Cells(6, 1) = f End If End Sub
「バブルソート」で検索するといいと思います。
配列を使わない方法はありますか?
並べ替えたい数値は、配列を使わずに、どのように与えられているのでしょうか。
その「ランダムな数字」てのはどこに保持されているものですか? ワークシートのセルの中?
数字を変数に入れてという感じにすることはできますでしょうか?
ワークシートのセルの中だと思います。
そこは断言してほしいとこだけど、とりあえず各数字を参照するコードを質問に追加しましょうか。
ベースもないとこで齟齬がでてもつまらないですからね。
断言します。
セル上に数値があるということですね。
なら、エクセルのソート機能をVBAから呼び出せば簡単に実現できますが、それはだめでしょうか。
ダメらしいです;;
このままでは丸投げの質問となりteratailでは推奨されない質問になってますので、未完成でもいいので、現状のコードを質問に追記してください。
やらなければならないことを全て文章にしてみてください。
A1とA2を比較し、小さいほうと入れ替え…などですね。
それすら出来ないというのであれば、
takasima20さんの言うように、バブルソートのやり方を調べるのが良いと思います。
コード追記しました。

回答1件
あなたの回答
tips
プレビュー