シート名をセルにかんたん表示!3つのやり方と驚きの自動化ワザ

Excelで「この行はどのシートの値?」と迷わないために、シート名をセルへ表示しておくと便利です。ここでは、すぐできる基本ワザから、関数・VBA・印刷の小ワザまで、実務で使えるノウハウを深掘りしてまとめました。用途別の選び方やトラブル対処も載せた保存版です。
- すぐ使える:手動コピペ(最短で確実)
- 自動で追従:関数で取得(名前変更にも強い)
- 入力=命名:VBAで双方向に自動化(現場の定番)
- 印刷物にも:ヘッダー/フッターでシート名を印字
- 上級テク:全シート名の一覧化・名前定義・再計算のコツ
3つのアプローチを比較(どれを選ぶ?)
- 手動コピペ:覚えることゼロ。更新のたびに貼り直しが必要。
- 関数で取得:保存済みブックなら自動で追従。未保存だと空になる点に注意。
- VBA連携:セルの値をシート名へ瞬時に反映。命名ルールの徹底や量産で威力。
基本編:まずは“今すぐ”できる手動コピペ
手順
- シート見出しをダブルクリック → 名称を選択 → Ctrl+C。
- 貼りたいセルを選択 → Ctrl+V。
変更や複製のたびに手直しが必要ですが、「今日だけ」「単発で1枚だけ」なら最短の解です。
関数編:シート名を“自動で”セルに表示する
関数なら、シート名を変えてもセルが自動更新されます。代表的な2パターンを紹介します。
1)CELLで取得 → 文字列からシート名を抜き出す
基本式(保存済みブックで有効)
=CELL(“filename”,A1)
上記は「フルパス[ブック名]シート名」を返すので、シート名だけを取り出すには加工します。
Excel 365 のかんたん版(TEXTAFTER)
=IFERROR(TEXTAFTER(CELL(“filename”,A1), “]”), “(まだ保存されていません)”)
従来版(RIGHT/LEN/FIND)
=IF(CELL(“filename”,A1)=””,”(まだ保存されていません)”,MID(CELL(“filename”,A1),FIND(“]”,CELL(“filename”,A1))+1,255))
- ポイント:ブックを一度保存しないとCELL(“filename”)は空になります。まず保存してから式を確認しましょう。
- 表示セルはどこでもOKですが、同じシート上のセルを第2引数に指定してください(例:A1)。
2)“名前の定義”で関数を簡略化(どのシートでも使える)
- [数式]→[名前の管理]→[新規作成]。
- 名前:SheetName(任意)
- 参照範囲: =IF(CELL(“filename”,!A1)=””,”(まだ保存されていません)”,MID(CELL(“filename”,!A1),FIND(“]”,CELL(“filename”,!A1))+1,255))
- 任意のセルで =SheetName と入力 → そのシート名が表示。
ブック全体で再利用でき、式が短くなります。365なら TEXTAFTER を使った版に差し替えてもOKです。
上級編:セルの値を“シート名へ”自動反映(VBA)
「B2に入力した商品名=シート名にしたい」「命名ルールをセルで管理したい」という現場ではVBAが効きます。以下は、指定セル変更→即時でシート名に反映する定番パターンです。
安全に動かすための考え方
- 使用不可文字の除去:\ / : * ? ” < > | [ ]
- 31文字制限の考慮:長いときは末尾を切り詰める
- 重複名の回避:既に存在する場合は連番を付与
- イベント無限ループ防止:処理中はApplication.EnableEvents=False
構成イメージ(要点)
- 対象シートのコードに「Worksheet_Change」プロシージャを記述
- 変更セル(例:B2)を監視 → サニタイズ → 衝突チェック → Me.Name 書き換え
- 異常系(空欄・全て禁止文字など)はメッセージ表示
上記の骨子で作れば、運用に耐える“事故りにくい”自動命名になります。
印刷物にも反映:ヘッダー/フッターでシート名を入れる
見積書や帳票など、紙にもシート名を載せたい場合は、印刷設定の小ワザが便利です。
- [ページレイアウト]→右下のダイアログ起動→[ヘッダー/フッター]
- [ユーザー設定ヘッダー]または[ユーザー設定フッター]で&A(シート名)を挿入
- ついでにページ番号(&P / &N)、日付(&D)も一緒に設定可能
これなら、セルを使わずに印刷だけシート名を明示できます。
さらに踏み込む:全シート名の一覧を作る(管理表や目次に)
方法A:Excel 4.0 マクロ関数(GET.WORKBOOK)を“名前の定義”で使う
- [数式]→[名前の管理]→[新規作成]
- 名前:AllSheets(任意)
- 参照範囲:=GET.WORKBOOK(1)
- 任意セルに =TRANSPOSE(AllSheets) などで展開(古い関数のため警告に注意)
- 返るのは [ブック名]シート名 形式。TEXTAFTER(“]”, …) などで整形可能
セキュリティポリシーで使えない環境もあるため、許可状況を確認してください。
方法B:Power Queryで「シート一覧」を読み込む
- [データ]→[データの取得]→[ブックから]→ 対象ブックを指定
- ナビゲーターでシート一覧を取得 → 名前列だけ残す → シートへ読み込み
- 更新すれば、増減も一覧に反映
目次シートや監査用の台帳を作るときに重宝します。
よくあるハマりどころ&対処
- 保存前で表示されない:一度保存(名前を付けて保存でもOK)。
- 名前を変えても更新されない:計算モードが手動の可能性。F9で再計算、または[数式]→計算方法を“自動”。
- 別シートの名前を表示したい:そのシートのセルを第2引数に指定(例:=MID(CELL(“filename”,Sheet2!A1),…)。
- VBAが動かない:コードの置き場所(対象シート/ThisWorkbook)を再確認。イベント有効化(Application.EnableEvents=True)もチェック。
- 禁止文字エラー:VBAでReplaceして除去。全部消えて空になるケースは再入力を促す。
運用レシピ:おすすめ構成例
- 管理台帳:先頭シートに「全シート目次(ハイパーリンク付き)」+各シートの左上にシート名セルを表示。
- 帳票量産:テンプレのB2へ名称入力→VBAで命名→ヘッダーに&Aで印刷にも反映。
- 監査強化:Power Queryでシート一覧を取得し、更新日・作成者などを併記。
まとめ
シート名のセル表示は、手動・関数・VBAの3段構えで状況に合わせて選ぶのがコツです。まずは関数で“自動追従”を整え、命名の標準化や量産が必要になったらVBAへ拡張。印刷物にはヘッダー/フッターの&Aで明示、といった組み合わせが実務では扱いやすく、ミスも減らせます。
「いま困っている」を解消するなら、まずは上の式をA1に入れて保存 → 表示を確認。次に“名前の定義”で式を共通化。それでも足りなければVBAで“入力=命名”まで自動化、という順で段階的に導入してみてください。作業時間がぐっと短くなるはずです。