【Excel】 シートがバラバラ! そんなときは

マクロです。

目次シートのシート名一覧の順番に並べかえ。

f:id:hatehate_masaki:20160229225050j:plain

Sub sort()

Dim sortedSheetName As String
Dim temp As String
Dim Range As String

' 1. 目次のシート順をセル(B2:B6)から取得
For i = 0 To 4

'2. 文字列sortedSheetNameに格納
Range = "B" & (i + 2)
temp = Sheets("目次").Range(Range).Value
If (i < 4) Then
temp = temp + ","
End If

sortedSheetName = sortedSheetName + temp
Next

' 3. 文字列:sortedSheetNameから配列:sheetNameに変換
Dim sheetName As Variant
sheetName = Split(sortedSheetName, ",")

' 4. 0から4以下の間でループ
For i = 0 To UBound(sheetName) - LBound(sheetName)

' 5. 取得したシートをコピーして、最後のシートの後ろに追加
Worksheets(sheetName(i)).Copy After:=Worksheets(Worksheets.Count)

' 6. 配列:sheetNameのi番目のシートを削除する(コピーしておいているので大丈夫)
Application.DisplayAlerts = False
Worksheets(sheetName(i)).Delete
Application.DisplayAlerts = True

' 7. 新しく追加したシートのシート名を変更
Worksheets(Worksheets.Count).Name = sheetName(i)
Next

End Sub

 

※取り急ぎ書いたメモ程度。後日、時間があるときにきれいにします。