残業を減らす!Officeテクニック

Excelのシートが多すぎて見たい表を探せない! 1クリックで移動できる目次シートの簡単な作成方法

HYPERLINK関数で目次シートを簡単に作成できる

 ひとつのファイルに多くのワークシートが含まれている場合、目的のワークシートへの切り替えに手間取ることがありますよね。画面左下の[◀]や[▶]を何度もクリックすることもあるでしょう。「目次シート」を作成したいと思っても、面倒で後回しにすることが多いと思います。

 [ハイパーリンクの挿入]ダイアログボックスを利用して、目次シートを作成するのが定番の操作ですが、ワークシート数の分、同じ操作を繰り返す必要があります。ちょっと面倒ですよね。

[ハイパーリンクの挿入]ダイアログボックスを利用してリンクを挿入する場合、ワークシート数の分、同じ操作を繰り返す必要があって面倒

 今回は、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」』(次のワークシート)となります。

 まとめると「ブックに含まれるワークシートの名前を出力して、次へ移動・名前の出力をワークシートの数だけ繰り返す」となります。

[開発]タブの[Visual Basic]をクリックする
VBEの画面が表示される。[表示]-[イミディエイトウィンドウ]の順にクリックする
イミディエイトウィンドウに「For Each i In ThisWorkbook.Sheets: debug.print i.name : next i」と入力して[Enter]キーを押す
ファイルに含まれるワークシート名が表示された

目次シートにHYPERLINK関数を埋め込む

 イミディエイトウィンドウに表示されたワークシートの名前を目次シートにコピーしたら、HYPERLINK関数を使うだけです。まず、HYPERLINK関数の構文を確認しておきましょう。

HYPERLINK関数の構文。[リンク先]にリンク先のアドレスを指定する。セルに表示する文字列を[別名]に指定する。省略した場合は[リンク先]の文字列が表示される

 [リンク先]には、URLやファイルパスなどを指定しますが、目次シートを作成する場合の[リンク先]は、同一のブックの別シートの特定のセルになります。例えば[3月]シートのセルA1は「#3月!A1」と表記します。
 目次シートのA列にワークシート名をコピーしておき、「&」演算子で「#」と「!A1」を連結すればOKです。セルに表示する文字列は任意ですが、ここでは、A列にコピーしたワークシート名を表示させます。以下は記述例です。

HYPERLINK関数の記述例。「#」、セルA2の値、「!A1」を「&」演算子で連結して[リンク先]とする。下方向に数式をコピーすればリンク先も切り替わる。[別名]はセルA2の値。もちろん任意の文字列でも構わない
VBEの画面のイミディエイトウィンドウに表示したワークシート名をコピーする
目次シートに貼り付けておく。セルB2に「=HYPERLINK("#"&A2&"!A1",A2)」と入力する
HYPERLINK関数でリンク先を指定できた。入力した数式をコピーしておく。試しにセルB4の「3月」をクリックする
[3月]シートのセルA1に切り替わる

 目次シートへ戻るためのハイパーリンクも同じ考え方で作成できます。[目次]シートのセルA1のリンク先は「#目次!A1」で表現できます。

任意のセルに「=HYPERLINK("#目次!A1","目次へ")」と入力する

 [ハイパーリックの挿入]ダイアログボックスでの操作を繰り返すより便利ではないでしょうか。ここでは、HYPERLINK関数からワークシート名をセル参照していますが、直接入力でも構いません。複数の数式をテキストエディターで作成して、目次シートに貼り付けて整えてもいいと思います。