アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (2件)

フリーのアドインソフトを使うか、


VBAで処理
http://www.moug.net/tech/exvba/0040060.html

たかだか20シートぐらいなら、手で並び替えても大した手間ではありません。
http://excel.noaruseikatu.jp/medium/m04.php
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/09/12 00:51

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
    • good
    • 5

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!