シートの切り替えは手間がかかる
Excelファイルを編集するとき、シート数が多くなると切り替えや管理が大変になります。例えば、以下のように月別のシートが1つのExcelファイルに含まれているケースが典型的でしょう。
多数のシートがあるEXCELファイルの例。目的のシートが隠れてしまっている場合、スライダーの幅を調整したり、シート切り替えのボタンをクリックしたりして探すことになります。
シート数が多くなってしまったとき、目次シートがあると便利です。今回は[ハイパーリンクの挿入]ダイアログボックスを利用して作成する方法と、HYPERLINK関数を使用する方法を紹介します。
まずは、以下のような目次シートを作成する必要があります。シートの一覧は手入力でも入力できますが、VBAを使用して一括で入力したい場合は、以下の「INDEX」内の3番目にあるシート見出しの一覧を簡単に作成するの項目を参照してください。
あらかじめ[目次]シートを作成して、シート名の一覧を用意しておきます。
[ハイパーリンクの挿入]を利用する
まずは、[ハイパーリンクの挿入]ダイアログボックスを利用した方法です。
1ハイパーリンクを設定する
ハイパーリンクを設定したいセルを選択して[Ctrl]+[K]キーを押します。[ハイパーリンクの挿入]ダイアログボックスが表示されるので、[このドキュメント内]から目的のシート名を選択して[OK]をクリックします。
2ハイパーリンクを確認する
先ほど選択したセルにマウスポインターを合わせると、文字列に下線が引かれました。文字列にマウスポインターを合わせると"手の形"に変わるので、そのままクリックします。
3目的のシートに切り替わった
ハイパーリンクを設定したシート([1月]シート)に切り替わりました。目次シートに戻って、ほかのセルにも同様にハイパーリンクを設定します。
HYPERLINK関数を利用する
前述の[ハイパーリンクの挿入]ダイアログボックスの操作は、シートの数だけ操作を繰り返す必要がありますが、HYPERLINK関数を使用することにより、一括で変更することが可能です。
HYPERLINK関数は、メールアドレスやURLへのリンクの設定だけでなく、セルやほかのExcelファイルへのリンクも設定できます。HYPERLINK関数の構文は以下の通りです。
=HYPERLINK
(リンク先, 別名)
シートのリンク先を[リンク先]に指定します。[別名]にはセルに表示したい文字列を入力します。
HYPERLINK関数のリンク先でシート名を参照するため、シート名の一覧は正確に入力しておきます。また、目次シートにHYPERLINK関数を入力するための列を用意しておいてください。
1HYPERLINK関数を入力する
HYPERLINK関数を入力するための列を用意しておきます。セルB2に「=HYPERLINK("#"&A2&"!A1",A2)」と入力して[Enter]キーを押します。
=HYPERLINK("#"&A2&"!A1",A2)
上記の式では、「A2&"!A1"」でA2セルに入力されているワークシート([1月]シート)へのハイパーリンクを張り、別名にはA2セルの名前(1月)を表示させています。同一ブック(同一ファイル)内にハイパーリンクを張るときは、#が必要になります。
2ハイパーリンクが設定された
文字列に下線が引かれてハイパーリンクが設定されたことがわかります。クリックして[1月]シートに移動できるか確認してください。
3ハイパーリンクを確認できた
[1月]シートに移動できました。ハイパーリンクの張り方は以上です。
4HYPERLINK関数をコピーする
ハイパーリンクを設定したセルの右下にマウスポインターを当て、+の形に変化したら、12月の列までドラッグします。
5目次シートへのハイパーリンクを設定する
各シートの任意のセル(ここではセルD1)に目次シートへ戻るハイパーリンクを設定すると、より便利になります。以下のコードを入力して、[Enter]キーを押しましょう。「目次へ戻る」は任意の文字列に変えてください。
=HYPERLINK("#目次!A1","目次へ戻る")
目次シートへのハイパーリンクが設定されました。クリックすると目次シートが表示されます。
シート見出しの一覧を一気に作成する
補足として、シート名の一覧を手入力せずにVBAで取得する方法を紹介します。
[Alt]+[F11]キーを押して「Microsoft Visual Basic for Application」の画面を表示させます。もしくは、[開発]タブから[Visual Basic]をクリックしても同じ画面になります。
上の画像は、VBAでコードを記述するための画面です。「イミディエイトウィンドウ」を利用してシート名の一覧を取得します。
1イミディエイトウィンドウを表示する
[Ctrl]+[G]キーを押します。画面下部に[イミディエイト]という領域が表示されます。
2シート名の一覧を表示する
以下のコードをコピー&ペーストして[Enter]キーを押します。「(シートの数分繰り返し)このExcelファイルに含まれるシート名を取得して出力する」という意味になります。
For Each n In ThisWorkbook.Sheets: debug.print n.name : next n
3シート名の一覧が表示された
Excelファイルに含まれるシート名の一覧が表示されました。
イミディエイトウィンドウに表示された結果はテキストとして扱えるので、選択してコピーし、目次シートに貼り付けます。貼り付けたらしたら「Microsoft Visual Basic for Application」の画面は閉じてください。
目次シートの作成方法と、見出しの一覧を取得する方法を紹介しました。なお、目次シートを使わずにシートを切り替える方法は、以下のHINTを参考にしてください。