シートの名前順で並べ替えをしたいのですがどうすればいいのでしょう?
シートを自動的にソートすることはできないのでしょうか?
大量にシートがあるブック(Excelファイル)を扱っている方から、よくいただく質問の一つです。
シート見出しをドラッグアンドドロップすることで、シートの並び替えはできますが大量にシートがあるときに、一つずつ移動するのが面倒なので自動化できないか?ということです。
よく出る要望ではありますが、残念ながらExcelの標準機能にはないので、VBA(Visual Basic for Applications)でマクロを作りましょう。
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
上記のSubプロシージャを、VBE(Visual Basic Editor)を起動して標準モジュールに貼り付け、シートを並び替えたいブックがアクティブな状態でSortSheetsマクロを実行すれば、並べ替えが行われます。
やっていることは、ソートのアルゴリズムでは一番単純なバブルソートです。バブルソートについては、検索してみるといろんなWebページが見つかりますので、興味のある方はあちこち読んでみてください。
バブルソートはソートアルゴリズムの中では遅いという欠点を持ちますが、処理内容がシンプルでわかりやすいですし、ブック内でシートを並べ替えるという機能であれば遅いといっても、まあ問題にならないのではないかと思います。
- Newer:PowerPointでバックスラッシュを入力したい
- Older:できる100ワザ アフィリエイト
Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » シートを並べ替えるExcelマクロ