メインコンテンツへスキップ

すべてのシートの目次を作成し、自動的に更新するにはどうすればよいですか?

Author: Xiaoyang Last Modified: 2025-08-06

例えば、数百のワークシートを含むワークブックがあり、多数のシートの中から特定のシートに移動するのは多くの人にとって頭痛の種です。この場合、これらのワークシートの目次を作成すると、特定のシートに迅速かつ簡単に移動するのに役立ちます。このチュートリアルでは、すべてのシートの目次を作成し、シートを挿入、削除、または名前を変更したときに目次が自動的に更新される方法について説明します。

数式を使用して、すべてのシートの目次を作成し、自動的に更新する

Kutools for Excel を使用して、すべてのシートの目次を作成し、自動的に更新する

VBA コードを使用して、すべてのシートの目次を作成し、自動的に更新する


数式を使用して、すべてのシートの目次を作成し、自動的に更新する

Excel では、範囲名を定義し、数式でその名前を参照することで目次を作成できます。次の手順に従ってください:

1. 目次を作成したいすべてのシートの前に新しいシートを挿入し、必要に応じて名前を変更します。

2. 次に、「数式」>「名前の定義」をクリックします。スクリーンショットをご覧ください:

click Define Name under Formula tab

3. 「新しい名前」ダイアログボックスで、「名前」ボックスに「Sheetlist」という名前を指定します(必要に応じて変更可能)。次に、以下の数式を「参照先」テキストボックスに入力します。

=GET.WORKBOOK(1)&T(NOW())

type a name and formula into the dialog box

4. 次に、「OK」ボタンをクリックしてダイアログボックスを閉じます。

5. これで、目次を作成したい新しいシートに移動し、空白のセルに次の数式を入力してください:

=IFERROR(INDEX(MID(Sheetlist,FIND("]",Sheetlist)+1,255),ROWS($A$2:A2)),"")
注: 上記の数式では、「Sheetlist」はステップ2で作成した範囲名です。

6. そして、フィルハンドルを下にドラッグして、空白のセルが表示されるまで続けます。現在のワークブック内のすべてのシート名(非表示のシートも含む)が以下のようにリストされます。スクリーンショットをご覧ください:

enter a formula and drag to display all sheet names

7. 次に、目次の内容に対してハイパーリンクを作成する必要があります。次の数式を使用してください:

=HYPERLINK("#'"&A2&"'!A1","Go To Sheet")
注: 上記の数式では、「A2」はシート名を含むセルであり、「A1」はそのシート内でジャンプしたいセルです。たとえば、ハイパーリンクテキストをクリックすると、そのシートのセル A1 に移動します。

apply a formula to create hyperlinks for each sheet name

8. これで、ハイパーリンクテキストをクリックすると、そのシートにすぐに移動します。また、新しいシートを挿入したり、シートを削除したり、シート名を変更したりすると、目次が自動的に更新されます。

注意:
  • 1. この方法では、すべての非表示シートも目次に表示されます。
  • 2. ファイルを「Excel マクロ有効ブック」形式で保存する必要があります。このようにすることで、次回このファイルを開いたときに数式が正常に動作します。

Kutools for Excel を使用して、すべてのシートの目次を作成し、自動的に更新する

「Kutools for Excel」を持っている場合、その「ナビゲーションペイン」を使用して、すべてのシート名を左ペインに垂直にリストし、特定のシートにすばやく簡単に移動できます。

Kutools for Excelは、300以上の高度な機能を提供し、複雑なタスクを簡素化し、創造性と効率を向上させます。 AI機能と統合され、Kutoolsは正確にタスクを自動化し、データ管理を容易にします。Kutools for Excelの詳細情報...無料トライアル...

Kutools for Excel のインストール後、次のように操作してください:

1. 「Kutools」>「ナビゲーション」をクリックします。スクリーンショットをご覧ください:

Click Kutools > Navigation

2. 展開された「ナビゲーション」ペインで、「ワークブック & シート」アイコンをクリックします。開いているすべてのワークブックが上部のリストボックスにリストされ、ワークブック内のすべての表示されているシートが下部のリストボックスに表示されます。スクリーンショットをご覧ください:

 click Workbook & Sheet icon, all opened workbooks and all visible sheets are displayed in the pane

3. これで、左ペインからシート名をクリックするだけでそのシートに移動できます。また、シートを削除、挿入、または名前変更すると、ペイン内のシートリストが動的に更新されます。

ヒント: デフォルトでは、非表示のシートはナビゲーションペインに表示されません。非表示のシートを表示したい場合は、「ボタンを押して非表示のワークシートを表示します。リリースして非表示にします。」アイコンをクリックするだけです。このアイコンをもう一度クリックすると、非表示のシートがすぐに隠れます。

 click the Toggle to unhide / hide all hidden worksheet(s) icon to display hidden sheets


VBA コードを使用して、すべてのシートの目次を作成し、自動的に更新する

時々、目次に非表示のシートを表示する必要がない場合があります。この問題を解決するために、次の VBA コードが役立ちます。

1. 目次を作成したいすべてのシートの前に新しいシートを挿入し、必要に応じて名前を変更します。次に、シートタブを右クリックし、コンテキストメニューから「コードの表示」を選択します。スクリーンショットをご覧ください:

right click the sheet tab, and choose View Code

2. 開かれた「Microsoft Visual Basic for Applications」ウィンドウで、以下のコードをシートコードウィンドウにコピーして貼り付けます:

VBA コード: すべてのシートの目次を作成し、自動的に更新する

Private Sub Worksheet_Activate()
'Updateby ExtendOffice
Dim xWsh As Worksheet
Dim xWshs As Worksheets
Dim xShowHinddenWorkSheet As Boolean
Dim xI As Long
Dim xRg As Range
Dim xStrTitle, xStrTCHeader, xStrWShName As String
xShowHinddenWorkSheet = False 'Change this to True to display the hidden sheets as you need
xStrTitle = "A1"
xStrTCHeader = "A3"
On Error Resume Next
Application.ScreenUpdating = False
Me.Cells.Clear
Me.Range(xStrTitle).Font.Bold = True
Me.Range(xStrTitle).Font.Size = Me.Range(xStrTitle).Font.Size + 2
Me.Range(xStrTitle).Value = "Table of Contents"
Me.Range(xStrTCHeader).Value = "No."
Me.Range(xStrTCHeader).Offset(0, 1).Value = "Sheet Name"
Me.Range(xStrTCHeader).Resize(1, 2).Font.Bold = True
xStrWShName = Me.Name
xI = 1
For Each xWsh In Application.ActiveWorkbook.Worksheets
    If xWsh.Name <> xStrWShName Then
        If (xWsh.Visible = xlSheetVisible) Or xShowHinddenWorkSheet Then
            Me.Hyperlinks.Add Anchor:=Me.Range(xStrTCHeader).Offset(xI, 1), Address:="", SubAddress:="'" & xWsh.Name & "'!A1", TextToDisplay:=xWsh.Name
            Me.Range(xStrTCHeader).Offset(xI).Value = xI
            xI = xI + 1
        End If
    End If
Next
Application.ScreenUpdating = True
End Sub

copy and paste the code into the module

3. 次に、「F5」キーを押してこのコードを実行すると、新しいワークシートに目次がすぐに作成されます。すべての非表示シートは目次に表示されません。スクリーンショットをご覧ください:

run code to create a table contents

4. 今後、シートを削除、挿入、または名前変更すると、目次が動的に更新されます。

注意: 次回ワークブックを開いたときにコードが正常に実行されるように、Excel ファイルを「Excel マクロ有効ブック」形式で保存する必要があります。

最高のオフィス生産性ツール

🤖 Kutools AI Aide:データ分析を革新:インテリジェント実行   |  コード生成  |  カスタム数式の作成  |  データを分析してグラフを生成  |  Kutools Functions を呼び出す
人気機能重複の検索・ハイライト・マーキング   |  空白行を削除   |  データを失わず列やセルを統合   |   丸める ...
スーパーLOOKUP複数条件VLOOKUP   複数値VLOOKUP  |  複数シートの検索  |  ファジーマッチ ....
高度なドロップダウンリストすばやくドロップダウンリストを作成   |  依存型ドロップダウンリスト   |  複数選択ドロップダウンリスト ....
列の管理:特定数の列を追加  | 列を移動  | 非表示列の表示状態を切り替え |  範囲と列の比較 ...
注目機能グリッドフォーカス   |  デザインビュー  |  強化された数式バー   ワークブック&ワークシートの管理   |  オートテキスト ライブラリ (Auto Text)   |  日付ピッカー   |  データの統合   |  セルの暗号化/復号化    リスト送信で電子メールを送信   |  スーパーフィルター   |   特殊フィルタ(太字/斜体/取り消し線でフィルタ...)
トップ15ツールセット12 種類のテキストツールテキストの追加特定の文字を削除など)  |  50 種以上のグラフ タイプガントチャートなど)  |  40を超える実用的な 数式誕生日に基づいて年齢を計算する、など)  |  19種の 挿入ツールQRコードの挿入パスから画像の挿入など)  |  12種類の 変換ツール単語に変換する通貨変換など)  |  7つの 結合&分割ツール高度な行のマージセルの分割など)  |  ...さらに多数
お好きな言語でKutoolsを使用できます ― 英語、スペイン語、ドイツ語、フランス語、中国語など40以上に対応!

Kutools for ExcelでExcelスキルを強化し、かつてない効率を体験しましょう。 Kutools for Excelは300以上の高度な機能で生産性向上と時間短縮を実現します。最も必要な機能を今すぐ取得...


Office TabはOfficeにタブ表示を追加し、作業効率を大幅に向上させます

  • Word、Excel、PowerPointでタブ編集とタブ閲覧を有効にします
  • 同じウィンドウ内の新しいタブで複数のドキュメントを開いたり作成したりできます。新しいウィンドウを開く必要はありません。
  • 生産性が50%向上し、1日に何百回ものマウスクリックも削減できます!