ecoslymeです。
エクセル(Excel)で、シートを自分の思い通り(任意)の順番に並べ替えたいシーンってありませんか?
エクセルのマクロでシートを任意の順に並び替えたいけど、Webに上がっている記事の全て、下準備が大変で使えないとか複雑すぎて全ユーザーが利用できる物ではないという状況でした。
そこでこの記事では、手持ちのエクセルにシート名を順番に記載するだけで、マクロ実行先のエクセルのシートを簡単に並べ替えできるマクロを私が作成したので、ご紹介させて頂きます。
マクロエクセルをダウンロードしたらそのまますぐ使えます。
マクロの内容に関しては詳細の説明を省きますので、予めご了承ください。
※記事の最後の方でエクセルマクロのダウンロードができます
元データと結果
(シート順を記載したエクセル(ダウンロード可))
(マクロ実行先エクセル)
⇓
(マクロ実行先エクセル)
エクセルシート並べ替えマクロの使用方法
それでは、エクセルシートを任意の順番に並べ替えるマクロの使用方法についてご紹介します。
- エクセルシート並べ替えマクロ(sheet-arrange-macro)の使用方法
①:この記事の下にある、「【ダウンロード】sheet-arrange-macro」をクリックして、マクロファイルをダウンロードしてください。
②:ダウンロードしたエクセルに、並べ替えたい順番でシート名を記入して下さい
③:並べ替えたいシートを持つマクロ実行先のエクセルブックを開いて下さい
④:マクロ実行先のエクセルブックで「開発」タブから、マクロ「’sheet-arrange-macro.xlsm’!シートを並べ替え」を実行して下さい
・2回ダウンロードすると「(1)」等の文字がついてしまう可能性があるので注意して下さい。
(マクロが使えなくなるので、ダウンロードファイルを一旦削除してから再ダウンロードして下さい)
使い方はかなりシンプルだと分かると思います。
分かりづらそうな部分について、これから詳細説明します。
②:ダウンロードしたエクセルに、並べ替えたい順番でシート名を記入して下さい
①でダウンロードしたマクロファイルに、並べ替えたいシートの順番をA2セルから順に記入して下さい。
以下、サンプルシート(【ダウンロード】sample-sheet-arrange)を例に説明します。
A2セルから、11B0、15B5、1135、1230の順番でシート名を記載しています。
③:並べ替えたいシートを持つマクロ実行先のエクセルブックを開いて下さい
サンプルシートは、左から1135、1230、11B0、1150の順番に並んでおりますが、以下の注意点があります。
<ポイント>
・15B5のシートがありません。(並べ替えマクロで指定しているシート名)
・1150のシートが余計です。(並べ替えマクロには無いシート名)
④:マクロ実行先のエクセルブックで「開発」タブから、マクロ「’sheet-arrange-macro.xlsm’!シートを並べ替え」を実行して下さい
サンプルシートのエクセルで、開発タブからマクロを実行して下さい。
マクロを実行します。
結果、以下のようにシートが指定した任意のシート名の順に並び変わってくれます。
シート並べ替えマクロの特徴
この記事で紹介しているシート並べ替えマクロの特徴についてご紹介します。
マクロ実行先のシートに指定したシート名がなくても、マクロ実行元のマクロエクセルにシート名が余分(不足)に書かれていても、このマクロは起動します。
つまり、実行元エクセル、実行先エクセルのいずれに過不足があってもマクロは起動します。
表で関係を簡単にまとめると以下のようになります。
<注意事項> | 実行先エクセルにシート名が | ||
有る | 無い | ||
「シート並べ替え」にシート名が | 有る | ・問題ありません。 | ・スキップされます。 |
無い | ・実行先エクセルブック内の左側に並びます。 ・「シート並べ替え」の一番最初のシート名の左側に並びます。 | ― |
かなり使い勝手の良いマクロエクセルになっていると思っています。
シート並べ替えマクロのコード
参考に、シート並べ替えマクロのコードを載せておきます。
- シート並べ替えマクロのコード
Sub シートを並べ替え()
Dim wb As Workbook
Set wb = ActiveWorkbook
Dim ws As Worksheet
Set ws = Workbooks(“sheet-arrange-macro.xlsm”).Worksheets(“シート並べ替えマクロ”)
ws.Copy Before:=wb.Worksheets(1)
Dim p() As String
Dim i As Integer
Dim s As String
Sheets(“シート並べ替えマクロ”).Select
Range(“A2”).Select
i = 0
ReDim p(i)
Do
s = ActiveCell.Offset(i, 0).Value
If (s = “”) Then
Exit Do
End If
ReDim Preserve p(i)
p(i) = s
i = i + 1
Loop
i = 0
Do
If (i > UBound(p)) Then
Exit Do
End If
On Error Resume Next
Sheets(p(i)).Move After:=Sheets(Sheets.Count)
i = i + 1
Loop
Application.DisplayAlerts = False
Sheets(“シート並べ替えマクロ”).Delete
Application.DisplayAlerts = True
End Sub
エクセルシート並べ替えマクロのダウンロード
エクセルシート並べ替えマクロのダウンロードをしたい方は、以下のリンクをクリックしてください。
エクセルでダウンロードが可能です。
<マクロ>
<テスト用サンプル>
最後に
いかがでしたでしょうか。
例えば、毎月会社のシステムからダウンロードしてくるエクセルブックがあり、シートが乱雑(アルファベット順など)に並んでいるとします。
このマクロエクセルを利用すれば、簡単に任意の順番に並べ替えることができます。
Web上で同様のマクロを探しましたが、あと一歩というところまでの記事はあるのですが、核心をついた便利なエクセルがありませんでした。
そのため頭を振り絞り、知らない情報を自分なりにまとめて形にした感じです。
この記事が少しでも皆さんのお役に立てれば幸いです。