- ベストアンサー
エクセルのシート見出しがバラバラになっているのを順番に直したい。
エクセルで作ったタイムシートなのですが、おととしからの分を消さないでとってあるのでシート見出しが大分増えてきていますが、順番がバラバラになってしまって、すごく使いにくいです。順番にそろえる(見やすくする)事は出来ますか?教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
シート見出しでシート名を選択してドラッグしてもよいですが多くなると比較的面倒ですね。 シート名を右クリックして「シートの移動またはコピー」を選択して挿入先を選択してもよいでしょう。また、挿入先のリストには「末尾へ移動」の項目もありますのでうまく利用するとよいでしょう。
その他の回答 (4)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 厳密には、文字列を比較すると、どうやら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 '----------------------------------------
お礼
丁寧に御回答ありがとうございます。 ただ、私には難しいです。。 ありがとうございました!!
- imogasi
- ベストアンサー率27% (4737/17069)
シートタブをマウスにクリックで捉え玉まで、見た目の右や左に移動させられるが、こんなのエクセル学習の始めに学ぶことでは。 シート名の文字列に何か規則性があるときその順に並べたり、多数のシートがあって、並べかえするのは、VBAを使わないといけないだろう。
- fujillin
- ベストアンサー率61% (1594/2576)
たかだか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
- 白石 勇夫(@sunbravery)
- ベストアンサー率46% (179/385)
シート見出しをドラッグし隣のシートの右とか左へもってゆくと順番は入れ替わりますよ。
お礼
御回答ありがとうございます!早速やってみました! とても簡単でした。 ありがとうございます!!
お礼
早速の御回答、ありがとうございました!! 今やってみてすっきりしました。今までずっとどうやるのかなと思っていたのでとても感謝です。ありがとうございます!!