Excel

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

k.w
\お買い物マラソン開催中/

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で“入力=命名”まで自動化、という順で段階的に導入してみてください。作業時間がぐっと短くなるはずです。

ABOUT ME
スポンサーリンク
記事URLをコピーしました