【VBA】シートを並び替える【バブルソートを使ってMoveで移動する】

Excel VBAで、シートを昇順や降順で並び替えたい場合は、バブルソートを使って、Moveでシートを移動することで、並び替えることができます。シートが大量にある場合で、シートを並び替えしたい場合は、自動で並び替えができるようにしていきましょう。
はじめに
この記事では、シートを並び替えする方法について、ご紹介します。
残念ながら、シートを並び替えする機能はないので、プログラム的に並び替えする必要があります。
バブルソートという並び替えの手法を使って、「Move」でシートを移動させて、シートを並び替えすることができます。
シートの並び替えについて、マスターしていきましょう。
では、シートを並び替えする方法について、解説していきます。
この記事を読むメリット
- シートを昇順や降順で並び替えることができるようになります。
本記事の内容を動画でまとめています
目次
シートを昇順に並び替えしたい
シートを昇順に並び替えしてみます。
昇順に並び替えする手順
昇順に並び替えするには、バブルソートを使って、シートを移動させることでできます。
バブルソートを使って、シートを移動させる手順についてみてみます。
まずは、1番目のシートを基準に、2~5番目のシートと比較して、シートの移動をします。
1番目を基準に比較
1番目を基準にして、2~5番目のシートと比較をします。

右のシートが小さい場合は、基準のシートの左へ移動をします。

次は、2番目のシートを基準にして、シートを比較してシートを移動します。
2番目を基準に比較
2番目を基準にして、3~5番目のシートと比較をします。

右のシートが小さい場合は、基準のシートの左へ移動をします。

次は、3番目を基準にしてシートを比較して、シートを移動させます。
3番目を基準に比較
3番目を基準にして、4~5番目のシートと比較をします。

右のシートが小さい場合は、基準のシートの左へ移動をします。

次は、4番目を基準にしてシートを比較して、シートを移動させます。
4番目を基準に比較
4番目を基準にして、5番目のシートと比較をします。

右のシートが小さい場合は、基準のシートの左へ移動をします。

こんな感じで、シートを比較して、シートを移動させることで、シートを昇順に並び替えすることができます。
VBAコード
シートを昇順に並び替えするVBAコードをみてみます。
手順としては、次のようになります。
- 基準のシートを「1~4番目」でループ
- 比較シートを「基準+1番目~最終シート」でループ
- 右側のシートが小さい場合は、基準シートの左に移動
VBAコードはつぎのようになります。
Sub TEST1() '基準をループ For i = 1 To 4 '比較先をループ For j = i + 1 To 5 '右側が小さい場合は、基準の左に移動 If Sheets(i).Name > Sheets(j).Name Then Sheets(j).Move before:=Sheets(i) '基準の左に移動 End If Next Next End Sub
では、実際に実行する流れをみていきます。
実行する流れ
実行する流れをみていきます。
やりたい内容は、シートを昇順に並び替えしたいということになります。
シートを昇順に並び替えしたい

1番目を基準に比較して、シートを移動させます。
1番目を基準に比較
1番目と、2番目のシートを比較します。

右のシートの方が小さいので、基準シートの左に移動をします。

1番目と、3番目のシートを比較します。

右のシートの方が小さいので、基準シートの左に移動をします。

1番目と、4番目のシートを比較します。

1番目と、5番目のシートを比較します。

次は、2番目を基準に比較して、シートを移動させます。
2番目を基準に比較
2番目と、3番目のシートを比較します。

2番目と、4番目のシートを比較します。

2番目と、5番目のシートを比較します。

次は、3番目を基準に比較して、シートを移動させます。
3番目を基準に比較
3番目と、4番目のシートを比較します。

3番目と、5番目のシートを比較します。

次は、4番目を基準に比較して、シートを移動させます。
4番目を基準に比較
4番目と、5番目のシートを比較します。

右のシートの方が小さいので、基準シートの左に移動をします。

これで、シートを昇順に並び替えできます。
シートを昇順に並び替えできた

シートを昇順に並び替えできました。
シートを降順に並び替えしたい
次は、シートを「降順」に並び替えしてみます。
降順に並び替えする手順
考え方は、昇順の場合と同じで、バブルソートを使って、シートを比較してシートを移動させていく、という感じになります。
昇順と違うのは、右のシートが「大きい」場合に、シートの移動をするという点になります。
では、手順をみていきます。
まずは、1番目を基準に比較して、シートを移動させます。
1番目を基準に比較
1番目を基準にして、2~5番目のシートと比較をします。

右のシートが大きい場合は、基準のシートの左へ移動をします。

次は、2番目を基準に比較して、シートを移動させます。
2番目を基準に比較
2番目を基準にして、3~5番目のシートと比較をします。

右のシートが大きい場合は、基準のシートの左へ移動をします。

次は、3番目を基準に比較して、シートを移動させます。
3番目を基準に比較
3番目を基準にして、4~5番目のシートと比較をします。

右のシートが大きい場合は、基準のシートの左へ移動をします。

次は、4番目を基準に比較して、シートを移動させます。
4番目を基準に比較
4番目を基準にして、5番目のシートと比較をします。

右のシートが大きい場合は、基準のシートの左へ移動をします。

という感じで、シートを降順に並び替えることができます。
VBAコード
シートを降順に並び替えるVBAコードをみてみます。
手順は、次のようになります。
- 基準のシートを「1~4番目」でループ
- 比較シートを「基準+1番目~最終シート」でループ
- 右側のシートが「大きい」場合は、基準シートの左に移動
降順の場合は、右側のシートが「大きい」場合に、シートを移動させます。
VBAコードは、次のようになります。
Sub TEST2() '基準をループ For i = 1 To 4 '比較先をループ For j = i + 1 To 5 '右側が大きい場合は、基準の左に移動 If Sheets(i).Name < Sheets(j).Name Then Sheets(j).Move before:=Sheets(i) '基準の左に移動 End If Next Next End Sub
では、実行する流れをみていきます。
実行する流れ
やりたい内容としては、シートを降順に並び替えしたいということになります。
シートを降順に並び替えしたい

では、VBAコードを実行してみます。
まずは、1番目を基準に比較して、シートを移動させます。
1番目を基準に比較
1番目を基準にして、2番目のシートと比較をします。

右のシートが大きい場合は、基準のシートの左へ移動をします。

1番目を基準にして、3番目のシートと比較をします。

1番目を基準にして、4番目のシートと比較をします。

1番目を基準にして、5番目のシートと比較をします。

次は、2番目を基準に比較して、シートを移動させます。
2番目を基準に比較
2番目を基準にして、3番目のシートと比較をします。

2番目を基準にして、4番目のシートと比較をします。

右のシートが大きい場合は、基準のシートの左へ移動をします。

2番目を基準にして、5番目のシートと比較をします。

次は、3番目を基準に比較して、シートを移動させます。
3番目を基準に比較
3番目を基準にして、4番目のシートと比較をします。

3番目を基準にして、5番目のシートと比較をします。

次は、4番目を基準に比較して、シートを移動させます。
4番目を基準に比較
4番目を基準にして、5番目のシートと比較をします。

右のシートが大きい場合は、基準のシートの左へ移動をします。

これで、シートを降順に並び替えできます。
シートを降順に並び替えできた

シートを降順に並び替えできました。
おわりに
この記事では、シートを並び替えする方法について、ご紹介しました。
残念ながら、シートを並び替えする機能はないので、プログラム的に並び替えする必要があります。
バブルソートという並び替えの手法を使って、「Move」でシートを移動させて、シートを並び替えすることができます。
シートの並び替えについて、マスターしていきましょう。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。
関連する記事から探す