• 締切済み

Excel2013 シートの並べ替え

エクセル2013で年表を作りました。 シートに「801~900年)、「901~1000年」というように、千年ごとに名前を付けました。 現在は、アトランダムになってしまっているのですが、そのシートを年代順に並べ替えたいです。 方法を教えて下さい。

みんなの回答

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.2

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)
回答No.1

フリーのアドインソフトを使うか、 VBAで処理 http://www.moug.net/tech/exvba/0040060.html たかだか20シートぐらいなら、手で並び替えても大した手間ではありません。 http://excel.noaruseikatu.jp/medium/m04.php

mmtl
質問者

お礼

早々に回答をありがとうございました。 手で並び替えても大したことことありませんでしたね。 でも、いろいろな方法を紹介していただき、勉強になりました。

関連するQ&A