Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » シートを並べ替えるExcelマクロ

シートを並べ替えるExcelマクロ

対象:Excel97, Excel2000, Excel2002, Excel2003

シートの名前順で並べ替えをしたいのですがどうすればいいのでしょう?
シートを自動的にソートすることはできないのでしょうか?

大量にシートがあるブック(Excelファイル)を扱っている方から、よくいただく質問の一つです。

シート見出しをドラッグアンドドロップすることで、シートの並び替えはできますが大量にシートがあるときに、一つずつ移動するのが面倒なので自動化できないか?ということです。

[スポンサードリンク]

よく出る要望ではありますが、残念ながらExcelの標準機能にはないので、VBA(Visual Basic for Applications)でマクロを作りましょう。

Sub シートをシート名の昇順で並び替える()

 Dim s1 As Long
 Dim s2 As Long

 For s1 = 1 To Sheets.Count
  For s2 = 1 To Sheets.Count - 1
   If Sheets(s2).Name > Sheets(s2 + 1).Name Then
    Sheets(s2).Move After:=Sheets(s2 + 1)
   End If
  Next s2
 Next s1

End Sub

上記のSubプロシージャを、VBE(Visual Basic Editor)を起動して標準モジュールに貼り付け、シートを並び替えたいブックがアクティブな状態でSortSheetsマクロを実行すれば、並べ替えが行われます。

やっていることは、ソートのアルゴリズムでは一番単純なバブルソートです。バブルソートについては、検索してみるといろんなWebページが見つかりますので、興味のある方はあちこち読んでみてください。

バブルソートはソートアルゴリズムの中では遅いという欠点を持ちますが、処理内容がシンプルでわかりやすいですし、ブック内でシートを並べ替えるという機能であれば遅いといっても、まあ問題にならないのではないかと思います。

関連語句
並べかえる,ならべかえる,並び替える,ならびかえる,ソートする,ソーティングする 

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » シートを並べ替えるExcelマクロ

「Sheets・Worksheet」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.