残業を減らす!Officeテクニック
Excelのシートが多すぎて見たい表を探せない! 1クリックで移動できる目次シートの簡単な作成方法
2023年3月13日 06:55
ひとつのファイルに多くのワークシートが含まれている場合、目的のワークシートへの切り替えに手間取ることがありますよね。画面左下の[◀]や[▶]を何度もクリックすることもあるでしょう。「目次シート」を作成したいと思っても、面倒で後回しにすることが多いと思います。
[ハイパーリンクの挿入]ダイアログボックスを利用して、目次シートを作成するのが定番の操作ですが、ワークシート数の分、同じ操作を繰り返す必要があります。ちょっと面倒ですよね。
今回は、HYPERLINK関数を利用して目次シートを作成するテクニックを紹介します。ファイルに含まれるワークシート名は、VBEのイミディエイトウィンドウから一気に取得可能です。
ワークシート名を一気に取得する
目次用のワークシートは作成しておいてください。[開発]タブからVBEの画面を表示してイミディエイトウィンドウを表示。以下のコードをコピー&ペーストして[Enter]キーを押すだけで、ファイルに含まれるワークシート名を取得できます。
For Each i In ThisWorkbook.Sheets: debug.print i.name : next i
「For Each i」は「i」の数だけ繰り返すと言う意味です。変数名の「i」は何でも構いませんが、後ろに記述する変数名と揃えてください。「In ThisWorkbook.Sheets」は「このブックに含まれるワークシート」の意味。「debug.print i.name」は「i」の名前、つまりワークシートの名前を出力(ここではイミディエイトウィンドウに表示)する。「next i」は『次の「i」』(次のワークシート)となります。
まとめると「ブックに含まれるワークシートの名前を出力して、次へ移動・名前の出力をワークシートの数だけ繰り返す」となります。
目次シートにHYPERLINK関数を埋め込む
イミディエイトウィンドウに表示されたワークシートの名前を目次シートにコピーしたら、HYPERLINK関数を使うだけです。まず、HYPERLINK関数の構文を確認しておきましょう。
[リンク先]には、URLやファイルパスなどを指定しますが、目次シートを作成する場合の[リンク先]は、同一のブックの別シートの特定のセルになります。例えば[3月]シートのセルA1は「#3月!A1」と表記します。
目次シートのA列にワークシート名をコピーしておき、「&」演算子で「#」と「!A1」を連結すればOKです。セルに表示する文字列は任意ですが、ここでは、A列にコピーしたワークシート名を表示させます。以下は記述例です。
目次シートへ戻るためのハイパーリンクも同じ考え方で作成できます。[目次]シートのセルA1のリンク先は「#目次!A1」で表現できます。
[ハイパーリックの挿入]ダイアログボックスでの操作を繰り返すより便利ではないでしょうか。ここでは、HYPERLINK関数からワークシート名をセル参照していますが、直接入力でも構いません。複数の数式をテキストエディターで作成して、目次シートに貼り付けて整えてもいいと思います。