• ベストアンサー

エクセルのシート見出しがバラバラになっているのを順番に直したい。

エクセルで作ったタイムシートなのですが、おととしからの分を消さないでとってあるのでシート見出しが大分増えてきていますが、順番がバラバラになってしまって、すごく使いにくいです。順番にそろえる(見やすくする)事は出来ますか?教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

シート見出しでシート名を選択してドラッグしてもよいですが多くなると比較的面倒ですね。 シート名を右クリックして「シートの移動またはコピー」を選択して挿入先を選択してもよいでしょう。また、挿入先のリストには「末尾へ移動」の項目もありますのでうまく利用するとよいでしょう。

bioty
質問者

お礼

早速の御回答、ありがとうございました!! 今やってみてすっきりしました。今までずっとどうやるのかなと思っていたのでとても感謝です。ありがとうございます!!

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 厳密には、文字列を比較すると、どうやらUnicode 比較になっているように思います。同じ種類の文字列なら、並べ替えは問題ないと思います。QuickSort を使っている方もいますので、こちらは、BubbleSort を使ってみましたが、そのアルゴリズムをコードに含めてしまえばよいと思います。 テキスト比較にしてありますから、半角、全角は関係ありません。 1(全角) < 2 (半角) となります。 '標準モジュールのみです。(出来れば、PERSONAL.XLSに入れると良いです) '---------------------------------------- Sub SheetNames()   Dim i As Integer   Dim j As Integer   Const iCOMP As Integer = vbTextCompare ''vbBinaryCompare   With ActiveWorkbook     For i = 1 To .Sheets.Count - 1       For j = .Sheets.Count To i Step -1         If StrComp(CStr(.Sheets(i).Name), CStr(.Sheets(j).Name), iCOMP) > 0 Then           .Sheets(i).Move After:=.Sheets(j)         End If       Next j     Next i   End With   Exit Sub End Sub '----------------------------------------

bioty
質問者

お礼

丁寧に御回答ありがとうございます。 ただ、私には難しいです。。 ありがとうございました!!

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

シートタブをマウスにクリックで捉え玉まで、見た目の右や左に移動させられるが、こんなのエクセル学習の始めに学ぶことでは。 シート名の文字列に何か規則性があるときその順に並べたり、多数のシートがあって、並べかえするのは、VBAを使わないといけないだろう。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

たかだか30枚程度のシートなので、手動でやってもないしたことないと思いますが、こんなものを作成してみました。 シート名の昇順に並び替えます。 VBAにソートのメソッドが無いようなので、少々長くなってしまいました。 使い方がわからない場合は、無視してください。 Sub test() Dim sName(), i, c  c = ThisWorkbook.Worksheets.Count  ReDim sName(1 To c)  For i = 1 To c   sName(i) = Worksheets(i).Name  Next i  Q_Sort sName, 1, c  ScreenUpdating = False  For i = 1 To c   If sName(i) <> Worksheets(1).Name Then Worksheets(sName(i)).Move Before:=Worksheets(1)  Next i  ScreenUpdating = True End Sub Sub Q_Sort(ByRef D() As Variant, ByVal L As Long, ByVal U As Long) Dim i As Long, j As Long, S As Variant, Tmp As Variant  S = D(Int((L + U) / 2))  i = L: j = U  Do   Do While D(i) > S    i = i + 1   Loop   Do While D(j) < S    j = j - 1   Loop   If i >= j Then Exit Do   Tmp = D(i): D(i) = D(j): D(j) = Tmp   i = i + 1: j = j - 1  Loop  If (L < i - 1) Then Q_Sort D, L, i - 1  If (U > j + 1) Then Q_Sort D, j + 1, U End Sub

回答No.1

シート見出しをドラッグし隣のシートの右とか左へもってゆくと順番は入れ替わりますよ。

bioty
質問者

お礼

御回答ありがとうございます!早速やってみました! とても簡単でした。 ありがとうございます!!

関連するQ&A