dポイントプレゼントキャンペーン実施中!

EXCELで、各シートに名前を付けて使っています。ひとつのファイルに膨大な数のシートが入っているので、分かりやすく操作できるようにシートを整列したいのですが、どうすれば良いでしょうか。

たとえば、シート名を「あいうえお」順で左から自動的に整列させたいと思っています。

EXCELでそういう操作は可能なんでしょうか?
よろしくお願いします。

A 回答 (4件)

シート1を作業用シートとして使います。


漢字が含まれていたら読みの順番には並び替えてくれません。

なお、このマクロは私が作ったものではなく、他サイトで回答
されていたものを勉強のため保存していたものです。

Sub test()
Dim WS As Worksheet
Dim i As Integer
Dim MyC As Range

Set WS = Worksheets.Add(After:=Worksheets(Worksheets.Count))
With WS
For i = 1 To Worksheets.Count - 1
.Cells(i, 1).Value = Worksheets(i).Name
Next
With .Range("A1").CurrentRegion
.Sort Key1:=.Parent.Range("A1"), Order1:=xlAscending, Header:=xlNo
For Each MyC In .Cells
Worksheets(MyC.Value).Move After:=Worksheets(Worksheets.Count)
Next
End With
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
End Sub
    • good
    • 0
この回答へのお礼

マクロが必要なんですか…。残念。マクロを使った経験が無いもので、難しそうですね。ご紹介ありがとうございました。

お礼日時:2005/06/04 09:45

直接の回答ではないのですが、


わかりやすく操作したい、というだけでしたら、先頭に一枚、目次でも入れてみたらいかがでしょうか?
やっぱりマクロを使うのですが、以下のマクロで、一枚目以外のシートへのリンクを作成できます。
後は #3さんの書いてるように、好きな並び順にしてしまえば比較的使いやすいのではないかと思います。
--
Sub MakeIndex()
For i = 1 To Worksheets.Count - 1
ActiveSheet.Hyperlinks.Add Anchor:= _
ActiveCell.Cells(i, 1), _
Address:="", _
SubAddress:=Worksheets(i + 1).Name & "!A1", _
TextToDisplay:=Worksheets(i + 1).Name
Next
End Sub

この回答への補足

申し訳ありませんが、マクロの良し悪しが判断できないので、回答ポイントは先着で付けました。皆様ありがとうございました。

補足日時:2005/06/04 09:49
    • good
    • 0
この回答へのお礼

回答ありがとうございました。マクロ…。使った事が無いんですよね。。。また別の整理方法を考えてみます。どうもありがとうございました。

お礼日時:2005/06/04 09:48

Sub test02()


Dim sh As Worksheet
i = 1
For Each sh In ActiveWorkbook.Worksheets
Worksheets("sheet4").Cells(i, "A") = sh.Name
i = i + 1
Next
End Sub
1つシートを追加します。その名前を上記ではSheet4としてます。
上記でSheet4のA列に、シート名の一覧が出ます。
ソートをプログラムで行うのは面倒なので、エクセルを利用して、Sheet4のA列を昇順にソートしてください。もし漢字名、」英字名で並び順が気に食わない場合は
B列に振り仮名等を振って、B列でソートしてください。(膨大な数とのことですが、振り仮名を振るのはできるかな。)
それに対して
Sub test03()
m = Worksheets("sheet4").Cells(1, "A")
For i = 2 To 4
n = Worksheets("sheet4").Cells(i, "A")
Worksheets(n).Move , Worksheets(m)
m = n
Next i
End Sub
を実行します。
しぇえt4のA列のA列のシート名の順にシートタブを並べます。2つに分け、ソートを手作業にすることにより、少しVBAコードは簡単になったでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございました。ちょっと私レベルでは操作し切れない感じです。残念。本当にありがとうございました。

お礼日時:2005/06/04 09:48

こんにちは。

多分マクロを使わないとダメかと思います。
私は、(1)、(2)、(3)‥(10)‥(20)‥ とシート名を付ける習慣がありまして、
下記のように、シート名を文字扱いし、文字数も比較して、
(1)、(10)、(2)、(20)、(3)‥とならないようにしてます。

Dim r As Long
Dim shtTemp As Worksheet
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
Set shtTemp = Worksheets.Add(Before:=Worksheets(1))
With shtTemp
For r = 1 To Worksheets.Count
.Cells(r, 1) = "'" & Worksheets(r).Name
.Cells(r, 2) = Len(Worksheets(r).Name)
Next
.Cells(1, 1).Sort _
Key1:=.Columns(2), Order1:=xlDescending, _
Key2:=.Columns(1), Order2:=xlDescending, _
Header:=xlYes
For r = 2 To .Cells(1, 1).CurrentRegion.Rows.Count
Worksheets(CStr(.Cells(r, 1))).Move Before:=Worksheets(1)
Next
.Delete
End With
    • good
    • 0
この回答へのお礼

ECXELの単純操作で整列できるのかな?と思っていたのですが、残念。マクロは全く手が出せないので、また別の整理方法を考えてみます。

お礼日時:2005/06/04 09:46

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