プロが教える店舗&オフィスのセキュリティ対策術

エクセル 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******

A 回答 (1件)

エクセルのソートはあくまで、セルの値によるソートです。

シート名は、セルの値ではないので、並べるとすると
(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-VB …シートの移動・複写
    • good
    • 0
この回答へのお礼

ご回答、誠に有難うございました。
自身なりに、いろいろ考えてて、お礼が遅くなりまして、申し訳ありませんでした。

お礼日時:2007/01/11 19:58

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