- 締切済み
Excel2013 シートの並べ替え
エクセル2013で年表を作りました。 シートに「801~900年)、「901~1000年」というように、千年ごとに名前を付けました。 現在は、アトランダムになってしまっているのですが、そのシートを年代順に並べ替えたいです。 方法を教えて下さい。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- eden3616
- ベストアンサー率65% (267/405)
Alt+F11でVBEを開き 挿入→標準モジュールで以下のVBAコードを貼付 Alt+F11または右上の×でVBEを閉じる Alt+F8または表示→マクロで「シートのソート」を選び実行 ■VBAコード Sub シートのソート() Dim mySt As Worksheet Dim i As Integer Set mySt = Sheets.Add(after:=Sheets(Sheets.Count)) With mySt .Columns("A").NumberFormatLocal = "@" For i = 1 To Sheets.Count - 1 .Cells(i, 1) = Sheets(i).Name If InStr(1, Sheets(i).Name, "~") > 0 Then .Cells(i, 2) = Left(Sheets(i).Name, InStr(1, Sheets(i).Name, "~") - 1) End If Next i .Sort.SortFields.Clear '昇順に並べる場合はOrder:=1、降順に並べる場合はOrder:=2 .Sort.SortFields.Add _ Key:=Columns("B"), _ SortOn:=xlSortOnValues, _ Order:=1, _ DataOption:=xlSortNormal With .Sort .SetRange Range("A:B") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row Sheets(.Cells(i, 1).Value).Move after:=Sheets(Sheets.Count) Next i Application.DisplayAlerts = False .Delete Application.DisplayAlerts = True End With End Sub
- shintaro-2
- ベストアンサー率36% (2266/6245)
フリーのアドインソフトを使うか、 VBAで処理 http://www.moug.net/tech/exvba/0040060.html たかだか20シートぐらいなら、手で並び替えても大した手間ではありません。 http://excel.noaruseikatu.jp/medium/m04.php
お礼
早々に回答をありがとうございました。 手で並び替えても大したことことありませんでしたね。 でも、いろいろな方法を紹介していただき、勉強になりました。