vba裏技、技、論理 - シートの並べ替えあいうえお順
顧客の増加に伴って、顧客別の売掛金台帳をシート別に作成していくと、作成順にシートが配置されます。これだとその顧客の売掛金台帳を探すのに手間が掛かります。そこであいうえお順にシートを並び替えておくと便利です。今日はその方法を書いてみます。
Sheets(“並替”)というシートを準備しておきます。そこにはあらかじめ「連番、シート名、フリガナ」というタイトルを付けた行を作っておきます。今新しくシートが追加されました。下記はそのコーディングです。
vシートの名前 = ActiveSheet.Name
Sheets(“並替”).Select
Cells.Find(“シート名”).End(xlDown).Offset(1).Select
Selection.Value = vシートの名前
Selection.Next.Value = InputBox(“フリガナを入力して下さい”)
Range(Cells.Find(“フリガナ”).Offset(1), Cells.Find(“フリガナ”).End(xlDown)).Select
Selection.EntireRow.Select
Selection.Sort key1:=Cells.Find(“フリガナ”)
Cells.Find(“シート名”).Offset(1).Select
vシートの名前 = Selection.Value
Do
Sheets(vシートの名前).Move before:=Sheets(“並替”)
Sheets(“並替”).Select
If ActiveSheet.Index = Sheets.Count Then
Exit Do
End If
Selection.Offset(1).Select
vシートの名前 = Selection.Value
Loop
Cells.Find(“連番”).Offset(1).Value = 1
Cells.Find(“連番”).Offset(2).Value = 2
Cells.Find(“連番”).Offset(1).Select
Range(Selection, Selection.Offset(1)).Select
Selection.AutoFill Destination:=Range(Selection(1),
Cells(Rows.Count, Selection.Column).End(xlUp))
Sheets(“並替”).Move before:=Sheets(1)
① シート名は会社名が漢字で書かれていることが多いので、あいうえお順の読み方は音読みになるので、フリガナを振っておきます。そうしないと並ぶ順番が音読みの順番になるので、並び替えをしてもあまり意味がないことになります。
② シートが一番前から何個目に配置されているかは「index」で表示されます。
③ 「sheets.count」はそのブックの全てにシートの数です。
④ 並び替えはフリガナによって行われます。それが「key1=cells.find(“フリガナ”)です。
⑤ 最後に「sheets(“並替”)」を一番最初に持って来ておかなければ次にシートが追加されたときにコマンドが上手く作動しません。
⑥ 連番をシート名の前に振っておくと、そのシートが何番目に出てくるか分かり便利です。
⑦ 「sheets(“並替”)」を参照することによりどのような名前の会社に売掛金台帳があるか分かるので、顧客管理の一助にもなります。
⑧ 「autofill」は顧客台帳のシートの前にはまだ連番が振ってないので、連番の列には空白があります。しかし連番は一番最後まで振らなければならないので、「シート名」の最後まで行きその一つ左の戻る必要があります。
⑨ 「next」は指定されているセルの一つ右を表し、「previous」は一つ左を示します。もし二つ右を表したいなら「selection.next.next」と書けばいいのです。
⑩ 「if activesheet.index=sheets.count」は「if activesheet.name=sheets(sheets.count).name」
とも書けますが、字数が多いので、「if activesheet.index=sheets.count」と書きました。研究していませんが他にも書き方はある筈です。
⑪ 「do loop」の中の「if end if」クローズとそれ以降を逆に書くとエラーになるので注意して下さい。
⑫ もしシートを名前と逆順に配置したければ「move before:=」を「move after:=」にすれば目的が達成できます。
何度も言っていますが、書き方を丸暗記せずに論理的に考えて書いて下さい。そうすると書き方が分からなくても、自分で創作することもできるようになります。
プログラマーは40歳までしかできないと聞いたことがありますが、私は70歳を優に超えています。そんな私でもプログラムは組めます。論理的な思考をすればどんなことでも、丸暗記より効率が良いのです。
酒巻 修平