大体でIT
大体でIT
2022/6/22
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コードをみてみます。
基準のシートを「1~4番目」でループ
比較シートを「基準+1番目~最終シート」でループ
右側のシートが小さい場合は、基準シートの左に移動
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番目を基準に比較
右のシートの方が小さいので、基準シートの左に移動をします。
右のシートの方が小さいので、基準シートの左に移動をします。
次は、2番目を基準に比較して、シートを移動させます。
2番目を基準に比較
次は、3番目を基準に比較して、シートを移動させます。
3番目を基準に比較
次は、4番目を基準に比較して、シートを移動させます。
4番目を基準に比較
右のシートの方が小さいので、基準シートの左に移動をします。
シートを昇順に並び替えできた
考え方は、昇順の場合と同じで、バブルソートを使って、シートを比較してシートを移動させていく、という感じになります。
昇順と違うのは、右のシートが「大きい」場合に、シートの移動をするという点になります。
まずは、1番目を基準に比較して、シートを移動させます。
1番目を基準に比較
1番目を基準にして、2~5番目のシートと比較をします。
右のシートが大きい場合は、基準のシートの左へ移動をします。
次は、2番目を基準に比較して、シートを移動させます。
2番目を基準に比較
2番目を基準にして、3~5番目のシートと比較をします。
右のシートが大きい場合は、基準のシートの左へ移動をします。
次は、3番目を基準に比較して、シートを移動させます。
3番目を基準に比較
3番目を基準にして、4~5番目のシートと比較をします。
右のシートが大きい場合は、基準のシートの左へ移動をします。
次は、4番目を基準に比較して、シートを移動させます。
4番目を基準に比較
4番目を基準にして、5番目のシートと比較をします。
右のシートが大きい場合は、基準のシートの左へ移動をします。
という感じで、シートを降順に並び替えることができます。
シートを降順に並び替えるVBAコードをみてみます。
基準のシートを「1~4番目」でループ
比較シートを「基準+1番目~最終シート」でループ
右側のシートが「大きい」場合は、基準シートの左に移動
降順の場合は、右側のシートが「大きい」場合に、シートを移動させます。
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
やりたい内容としては、シートを降順に並び替えしたいということになります。
シートを降順に並び替えしたい
まずは、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」でシートを移動させて、シートを並び替えすることができます。
シートの並び替えについて、マスターしていきましょう。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。