- 締切済み
「ワークシート見出しの順番」 を希望順に並び替えるマクロは ?
エクセル 2002 です。 シートの数は、必ず 36 以下です。 下記例は、 1、「 頭の AK 」 は 必ず、全部同じです。 2、「 数字部分の2桁 」 は、必ず、 1 ~ 10 です。 3、「 * 」 は、必ず、6 桁 です。 4、たとえば下記例の 「 AK01****** 」 は、 「 AK01****** だけの見出し全部 ( 01 だけが全く同じのデータが必ず続いてます) 」 を 「 01 の エリア 」 と 表現させて頂ます。 5、この エリア は 必ず、2つ か 3つ です。( 下記例では、エリア は 3つ です) この エリア順 を 「 InputBox を使い 」 希望順に並び替えたいのです。 何卒、ご教授くださいませ。 ----------------- Sub 見出し並び替え() Dim sort_key As String Dim sDataArray As Variant Dim i As Long Dim j As Long sort_key = InputBox("ソートキーを入力してください" & vbCrLf & "10,04,01 のような感じで入力してください") ・ ・ End Sub ---例---------------------------------------------- ブック1( エリア順が 01、04、10 です ) シート見出し AK01****** AK01****** ・・ AK01****** AK04****** ・・ AK04****** AK10****** ・・ AK10****** ブック1( エリア順を 10、04、01 にしたいです ) シート見出し AK10****** AK10****** ・・ AK10****** AK04****** ・・ AK04****** AK01****** ・・ AK01******
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルのソートはあくまで、セルの値によるソートです。シート名は、セルの値ではないので、並べるとすると (1)セルにシート名を中間作業として書き込み、エクセルのソートメソッドを使う (2)またはソートのアルゴリズムを使って、配列にでも入れた、シート名を並べ替える。 ことになるでしょう。 さて(2)のソートアルゴリズムはわかりますか。知らなければ本でも、WEBでも「ソート アルゴリズム}で照会してください。 ーーー さてソートするとき、シート名のままソートしても、質問者の希望に合わないわけで、そこで、修正シート名をプログラムで作らないとなりません。 これは、机上ででもできるはず。文字列の、切った張ったの世界です。 それは質問者が考えて見るべきです。ややこしい説明をせずに。 10をA、04をB、01をCとか 10を1、04を2、01を3とか 必ずその順になる文字列に置き換えた文字列を作ればよい。 そしてシート名と、修正シート名は、ソートするとき、対で動かすこと。 ーーー その後、ソート後のシート名で、シートの移動のマクロで、シートを並べ替える(その順番にする)。 http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page2.htm#シートの移動・複写
お礼
ご回答、誠に有難うございました。 自身なりに、いろいろ考えてて、お礼が遅くなりまして、申し訳ありませんでした。