【Excel】シート名をセルに表示する関数

【Excel】シート名をセルに表示する関数

こんな人にオススメの記事です

  • Excelのシート名を取得する関数を知りたい人

Excelを使っていると、シート名をセルに表示したい場面があります。

特に複数シートを使うテンプレートでは、「このシートは何という名前なのか」を関数で表示すると便利です。

この記事では、CELL("filename") から取得できる「ブックのフルパス+シート名」からシート名だけを抜き出す3つの方法を紹介します。

Excelのバージョンや数式の書き方が異なるので、自分の環境に合ったやり方を選んでみてください。

これらの関数を利用する際の重要な注意点は、Excelファイルを一度でも保存しておく必要があることです。新規作成のブックで関数を使うと「VALUE!」と表示されるので、必ずファイルを保存してから数式を入力してください。

目次

Excelのシート名を取得する関数は3つある

シート名を取得する関数は大きく分けて3種類あります。
使っているExcelのバージョンや、慣れによって使い分けてみてください。

使用しているExcelのバージョンがわからない場合は、事前にWord・Excel・Outlook・PowerPointのバージョンを確認する方法を参考に確認してください。

  1. 最新の Excel (Microsoft 365 のサブスクリプション版) を使っている場合
    TEXTAFTER が最もシンプルでおすすめ。
  2. 古いバージョンの Excel だが、置換という考え方がしっくり来る場合
    REPLACE + FIND を使う。
  3. 従来の文字列切り出しテクニックに慣れている場合
    RIGHT + LEN + FIND の組み合わせが無難。

TEXTAFTER関数

この関数は圧倒的に簡単で数式もわかりやすい一方、Microsoft 365 のサブスクリプション版でしか使用できません。

=TEXTAFTER(CELL("filename", A1), "]")

■ 仕組み

TEXTAFTER は、指定した区切り文字の後ろにあるテキストを抽出する、新しいExcel関数です。

  • CELL("filename", A1) で取得した文字列に対して、区切り文字を "]" に設定。
  • "]" の後ろにある部分、つまりシート名だけをそのまま返してくれます。

■ こんな人におすすめ

REPLACE関数 + FIND関数

書式がシンプルで、置換操作に慣れている方には使いやすい関数です。

すべてのExcelバージョンで利用できるため、互換性にも優れています。

ただし、FIND関数で文字数を取得してから置換する仕組みを把握していないと、やや直感的にわかりにくいかもしれません。

=REPLACE(CELL("filename", A1), 1, FIND("]", CELL("filename", A1)), "")

■ 仕組み

  1. まず、CELL("filename", A1) でファイル名とシート名を含む文字列を取得します。
  2. FIND("]", … )"]" が何文字目にあるかを調べます。
  3. 文字列の先頭(1文字目)から "]" までを、一気に空文字 "" で置き換えて削除します。
  4. 結果として、 "]" の直後にあるシート名だけが残ります。

■ こんな人におすすめ

  • 「置換」(REPLACE) のほうがイメージしやすい方
  • 古いバージョンの Excel を使っているTEXTAFTER は使えない)
  • なるべく短め・シンプルな数式で書きたいという場合

RIGHT関数 + LEN関数 + FIND関数

RIGHTとLEN、FINDを組み合わせると、どうしても数式が長くなる点が難点です。

しかし、昔からある関数ばかりで構成されているため、慣れている人にはこちらのほうが使いやすいかもしれません。

=RIGHT(CELL("filename", A1), LEN(CELL("filename", A1)) - FIND("]", CELL("filename", A1)))

■ 仕組み

  1. CELL("filename", A1) で「ブックのフルパス+シート名」という文字列を取得します。
  2. FIND("]", CELL("filename", A1)) は、その文字列内で "]" が何文字目にあるかを探します。
  3. LEN(… ) - FIND(… ) で、 "]" より後ろに何文字あるか計算します。
  4. その分だけ文字列の右側から取り出せば、シート名だけが得られるわけです。

■ こんな人におすすめ

  • 昔ながらの Excel 関数の組み合わせに慣れている方
  • RIGHTLENFIND での文字数計算が苦にならない方
  • どのバージョンの Excel でも動く 安定した方法を使いたい場合

まとめ

  • とにかく簡単に実現したい&Excel 365 ならTEXTAFTER 一択
  • 古めのバージョンでも通用するシンプルさならREPLACE + FIND
  • 従来の文字列切り出しが得意ならRIGHT + LEN + FIND

どの関数も最終的には「CELL("filename")」の戻り値からシート名だけを抽出する点は同じです。

Excelのバージョンや慣れ親しんだ操作方法に合わせて、使いやすいものを選んでみてください。

以上、Excelでシート名をセルに表示する関数のまとめでした。ぜひ活用してみてください。

CELL("filename")の役割を覚えておこう

CELL関数は、指定したセルのいろいろな情報を返します。
その中でも、CELL("filename", A1)と書くと「ブックのフルパス+ファイル名+シート名」をまとめて返してくれます。
たとえば、次のような文字列です。

C:\Users\SampleUser\Documents\[SampleBook.xlsx]Sheet1

この文字列には、「フォルダの場所(パス)」「ファイル名(拡張子つき)」「シート名」の3つがいっしょに含まれています。

  • フォルダの場所(パス):C:\Users\SampleUser\Documents\
  • ファイル名:SampleBook.xlsx(本当は[ ]に囲まれています)
  • シート名:Sheet1

「CELL("filename")」は、これらを全部つなげて返しているのです。

Excelのファイル名やファイルの保存先をセルに表示する方法

ここまでは、CELL("filename") を使って シート名 をセルに表示する3つの方法を紹介しました。

実はこの関数を少し応用すると、ファイル名(拡張子付き) や フルパス(フォルダパス部分) を抽出することも可能です。

Excelのファイル名だけを取り出す方法

CELL("filename", A1)の結果には、[ファイル名]という形でファイル名が含まれています。

ここでは、Excel 365の新機能であるTEXTAFTER(テキストアフター)とTEXTBEFORE(テキストビフォア)を使う方法と、古いExcelで実現する方法をあわせてご紹介します。

Excel 365での方法

=TEXTBEFORE(TEXTAFTER(CELL("filename", A1),"["),"]")
  • STEP 1: TEXTAFTER
    TEXTAFTER(CELL("filename", A1), "[") で、「[」のすぐ後ろからの文字列を取り出します。
    例:「C:...[SampleBook.xlsx]Sheet1」→「SampleBook.xlsx]Sheet1」になります。
  • STEP 2: TEXTBEFORE
    次に TEXTBEFORE(..., "]") を使い、「]」の手前だけを取り出します。
    例:「SampleBook.xlsx]Sheet1」→「SampleBook.xlsx」となり、ファイル名だけが残ります。

文字列を「[」から後ろと「]」より前で区切るイメージなので、仕組みもわかりやすいですよ。

Excel 365以外での方法

古いExcelを使っている方は、REPLACE(リプレイス)関数などを組み合わせる方法がおすすめです。

以下の例では、まず先頭から「[」までを削除し、続いて「]」以降を削除するという手順でファイル名だけを残します。

=REPLACE(REPLACE(CELL("filename", A1),1,FIND("[",CELL("filename", A1)),""),FIND("]",REPLACE(CELL("filename", A1),1,FIND("[",CELL("filename", A1)),"")),99,"")
  • STEP 1: 「[」までを削除
    FIND("[", CELL("filename", A1)) で「[」の位置を調べ、その位置までを空文字に置き換えます。
    例:「C:...[SampleBook.xlsx]Sheet1」→「SampleBook.xlsx]Sheet1」になります。
  • STEP 2: 「]」以降を削除
    残った「SampleBook.xlsx]Sheet1」で、さらに FIND("]", ...) を使って「]」以降を空文字にします。
    例:「SampleBook.xlsx]Sheet1」→「SampleBook.xlsx」となり、ファイル名が完成します。

数式は長めですが、「いらない部分を2回削除しているだけ」という考え方です。

フォルダの場所(パス)だけを取り出す方法

フォルダの場所(パス)だけを取り出したい場合は、[ の前まで取得すればよいため、数式はさらに簡単です。

文字列の先頭から [ の直前まで切り取るイメージで考えてみてください。

Excel 365での方法

=TEXTBEFORE(CELL("filename", A1),"[")

TEXTBEFORE(...,"[") は「[」より前の文字列を丸ごと取り出します。
例:「C:...[SampleBook.xlsx]Sheet1」→「C:...\」だけが取り出せるので、フォルダの場所(パス)がわかります。

Excel 365以外での方法

=LEFT(CELL("filename", A1),FIND("[",CELL("filename", A1))-1)
  • STEP 1: 「[」の位置を調べる
    FIND("[", CELL("filename", A1)) で、「[」が何文字目にあるか取得します。
  • STEP 2: LEFTで「[」の手前までを取得
    「[」の手前(-1した数)だけをLEFT関数で抜き出します。
    例:「C:...[SampleBook.xlsx]Sheet1」→「C:...\」となり、パスが取り出せます。

まとめ

  • CELL("filename") は、「フルパス+[ファイル名]シート名」 を返してくれます。
  • ファイル名だけ[ ] に挟まれた部分を取り出すと取得できます。
    • Excel 365なら TEXTAFTER / TEXTBEFORE で区切ると簡単です。
    • 古いExcelは REPLACEFIND を使って不要な部分を削除します。
  • フォルダの場所(パス)だけ → 「[」より前だけを切り取ります。
    • Excel 365なら TEXTBEFORE(...,"[")
    • 古いExcelなら LEFT(..., FIND("[",...)-1 )

最初は数式が長く感じるかもしれませんが、実際は「どこを切り取り、どこを削除するか」を決めるだけの単純な作業です。

使っているExcelのバージョンに合わせて始めてみてください。

文字列操作に慣れると、ファイル名やパスを表示したり、自動化の仕組みに組み込んだりすることも簡単になります。

Excelでシート名をセルに表示する関数に関するよくある質問と答え

シート名をセルに表示する関数に関するよくある質問と答えをまとめました。

CELL("filename")の仕組み

CELL("filename")とは具体的に何を返すのですか?

保存したブックの場所(パス)と、ファイル名、そしてシート名を一つの文字列として返します。たとえば「C:\Users\SampleUser\Documents[TestBook.xlsx]Sheet1」というような形式になります。

なぜA1を指定しているのか疑問です。どのセルでもいいのですか?

基本的にはどのセルを指定しても結果は同じです。CELL関数は引数のセルを基準に情報を取得する仕組みですが、ファイル名やパスを返す場合はどこでも同じ値が返るため、慣例的にA1が使われることが多いです。

「#VALUE!」というエラーが出たときの原因は何ですか?

よくある原因は、ファイルをまだ一度も保存していない場合です。新規で作成しただけのブックだとパスやファイル名が決まっていないので、CELL("filename")がエラーを返すことがあります。

CELL("filename")はいつ使っても大丈夫ですか?途中で値がおかしくなることはありませんか?

いったん保存済みのファイルであれば、基本的にブックを開いている限りは大丈夫です。途中で保存してもパスやファイル名が変わらない限りは問題ありません。ただし、完全に未保存の状態ではエラーになる点に注意してください。

バージョンや互換性について

TEXTAFTERやTEXTBEFOREという関数が見つかりませんが、どうすればいいですか?

これらはMicrosoft 365(継続アップデート版)のExcelで追加された機能です。買い切り版のExcel 2019や2021には含まれていないので、代わりにREPLACEやLEFT、FINDなどを使って文字列を分割する方法を検討してください。

Microsoft 365以外のExcelでファイル名を抜き出したいとき、どんな方法がありますか?

REPLACEを使って余分な部分を削る方法や、LEFTとFINDを組み合わせて位置を計算する方法がよく使われます。具体的には、「[」より前を消す→「]」以降を消すという手順を二段階で行うやり方が分かりやすいです。

シートを保護した状態でCELL("filename")を使うと問題が起きませんか?

シートの保護はあくまでセルの編集制限なので、CELL関数が返す情報自体は変わりません。保護の有無に関係なく動作するので安心してください。

ファイル名やフォルダの場所を引き出すときの疑問

フォルダの場所だけを表示したいときはどう書けばいいですか?

TEXTBEFORE(CELL("filename", A1),"[")(Microsoft 365のExcelの場合)や、LEFT(CELL("filename", A1),FIND("[",CELL("filename", A1))-1)(Microsoft 365以外のExcelの場合)と書くと、「[」より前の部分だけを抽出できます。

シート名を表示したいとき、いちばん分かりやすい式は何でしょう?

Microsoft 365以外のExcelの場合なら、RIGHTとFINDを組み合わせる方法が定番です。例として、=RIGHT(CELL("filename", A1),LEN(CELL("filename", A1))-FIND("]",CELL("filename", A1)))のように書くと、「]」の後ろだけを取り出してシート名にできます。

ファイル名の中に特定の単語が入っているかを判断したいです。簡単にできますか?

TEXTAFTERでファイル名の部分を取り出してからFIND関数で単語を検索する方法が一般的です。見つからなかったときにエラーになるため、IF関数とISERRORを組み合わせると、あるかないかを判定できます。

ファイル名、フォルダの場所、シート名をすべてまとめてセルに表示したいです。どう組み合わせればいいですか?

たとえば、フォルダ部分はTEXTBEFORE(…,"[")、ファイル名部分はTEXTBEFORE(TEXTAFTER(…,"["),"]")、シート名はTEXTAFTER(…,"]")という形で個別に取得し、それぞれを隣のセルに表示するとわかりやすいです。

ファイルの複製や共有関連

ワークシートを複製したらCELL("filename")はどうなりますか?

同じブック内に新しいシートを増やしただけなら、ブックの保存先やファイル名は同じです。シート名がコピーされるだけなので、CELL("filename")に含まれるシート名の部分はその新シートの名前に変わります。

共有フォルダに保存した場合、CELL("filename")にはどのような文字が返るのですか?

共有フォルダなら、ネットワーク経路(\サーバー名\フォルダ名…)がそのまま文字列として返ります。ローカルパスと同じように扱えますが、サーバー名やフォルダ階層が長いほど文字列も長くなる点に注意してください。

別のパソコンでファイルを開いた場合、CELL("filename")の値は変わりますか?

ファイルを保存した場所が変われば、その場所に応じたパスが返るので内容は変わります。同じ場所で開く場合はほとんど同じ文字列になりますが、パソコンの環境でドライブ名や割り当てが違うとパス表記も異なる可能性があります。

ほかのブックを参照してCELL("filename")を呼び出すことはできますか?

可能ですが、外部参照として扱われるため、別ブックの保存場所が変わるとリンク切れになることがあります。別ブック名を指定して参照できるものの、運用時はブック同士の置き場所に注意が必要です。

その他Excelに関する記事

その他Excelに関する記事はこちらです。是非御覧ください。

最後までご覧いただきありがとうございました。
このサイトは情シスマンが半径3m以内のITに関する情報を掲載してるサイトです。
Windows系を主として、ソフトや周辺機器の操作や設定について画像も用いながらわかりやすく解説しています。

解説している内容に誤りがあった場合や、補足が必要な場合、もっと知りたい場合はこちらのお問い合わせフォームからご連絡ください。
個人の方を限定にサポートさせていただきます。

実行環境
Windows11 Home 24H2
64 ビット オペレーティング システム
11th Gen Intel(R) Core(TM) i7-11375H @ 3.30GHz 3.30 GHz
16.0 GB RAM
Microsoft 365

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次