ワークシートの並べ替え

追加したExcelワークシートって,見出しの名前で並べ替えする機能はないですよね。しかしVBAを使うと並べ替えができます。
方法はアルゴリズムが安定とされているバブルソートを使います。

バブルソートはリストにおいて隣り合うふたつの要素の値を比較して条件に応じた交換を行う整列アルゴリズムです。
条件とは値の大小関係です。「値の大きい順(降順)」か「値の小さい順(昇順)」にリストを並び替えます。
このソートを実行すると値の大きいまたは小さい要素が浮かびあがってくるように見えることから、バブル(bubble: 泡)ソートと呼ばれます。バブルソート

隣り合うシート見出し名を比較しながら並べ替えをするので,比較回数は n(n-1)/2 となり
下のコード通り2重ループにすることでできます。この平均計算時間は O(n2)となります。

Sub Bubble()
' ワークシートを昇順で並べ替える
Dim sopg As Long
Dim comp As Long
    For sopg = 1 To Worksheets.Count
        For comp = 1 To Worksheets.Count - 1
            If Worksheets(comp).Name > Worksheets(comp + 1).Name Then
                Worksheets(comp).Move After:=Worksheets(comp + 1)
            End If
        Next comp
    Next sopg
End Sub

例えばこのようにバラバラに並んだシート見出しも…
ソート前

非力な Intel Pentium U5600(1.33GHz)でもほぼ一瞬 ^^; で
ソート後

かゆいところに手が届くのは良いですね 😉

参考:
ソースコード探険隊
インストラクターのネタ帳