こんな人にオススメの記事です
- Excelのシート名を取得する関数を知りたい人
Excelを使っていると、シート名をセルに表示したい場面があります。
特に複数シートを使うテンプレートでは、「このシートは何という名前なのか」を関数で表示すると便利です。
この記事では、CELL("filename") から取得できる「ブックのフルパス+シート名」からシート名だけを抜き出す3つの方法を紹介します。
Excel のバージョンや数式の書き方が異なるため、自分の環境に合った方法を選択してください。
Excelのシート名を取得する関数は3つある
シート名を取得する関数は大きく分けて3種類あります。
使っているExcelのバージョンや、慣れによって使い分けてみてください。
- 最新の Excel (Microsoft 365 のサブスクリプション版) を使っている場合
→TEXTAFTERが最もシンプルでおすすめ。 - 古いバージョンの Excel を使用しており、置換の考え方に慣れている場合
→REPLACE + FINDを使う。 - 従来の文字列切り出しテクニックに慣れている場合
→RIGHT + LEN + FINDの組み合わせが無難。
TEXTAFTER関数
この関数は圧倒的に簡単で数式もわかりやすい一方、Microsoft 365 のサブスクリプション版でしか使用できません。
=TEXTAFTER(CELL("filename", A1), "]")■ 仕組み
TEXTAFTER は、指定した区切り文字の後ろにあるテキストを抽出する、新しいExcel関数です。
CELL("filename", A1)で取得した文字列に対して、区切り文字を"]"に設定。"]"の後ろにある部分、つまりシート名だけをそのまま返してくれます。
■ こんな人におすすめ
- Microsoft 365 のサブスクリプション版を使っている
- とにかくシンプルで可読性の高い数式がいい
- 「狙った文字列を一気に取り出したい」という方
REPLACE関数 + FIND関数
書式がシンプルで、置換操作に慣れている方には使いやすい関数です。
すべてのExcelバージョンで利用できるため、互換性にも優れています。
ただし、FIND関数で文字数を取得してから置換する仕組みを把握していないと、やや直感的にわかりにくいかもしれません。
=REPLACE(CELL("filename", A1), 1, FIND("]", CELL("filename", A1)), "")■ 仕組み
- まず、
CELL("filename", A1)でファイル名とシート名を含む文字列を取得します。 FIND("]", … )で"]"が何文字目にあるかを調べます。- 文字列の先頭(1文字目)から
"]"までを、一気に空文字""で置き換えて削除します。 - 結果として、
"]"の直後にあるシート名だけが残ります。
■ こんな人におすすめ
- 「置換」(REPLACE) のほうがイメージしやすい方
- 古いバージョンの Excel を使っている(
TEXTAFTERは使えない) - なるべく短め・シンプルな数式で書きたいという場合
RIGHT関数 + LEN関数 + FIND関数
RIGHTとLEN、FINDを組み合わせると、どうしても数式が長くなる点が難点です。
しかし、昔からある関数ばかりで構成されているため、慣れている人にはこちらのほうが使いやすいかもしれません。
=RIGHT(CELL("filename", A1), LEN(CELL("filename", A1)) - FIND("]", CELL("filename", A1)))■ 仕組み
CELL("filename", A1)で「ブックのフルパス+シート名」という文字列を取得します。FIND("]", CELL("filename", A1))は、その文字列内で"]"が何文字目にあるかを探します。LEN(… ) - FIND(… )で、"]"より後ろに何文字あるか計算します。- その分だけ文字列の右側から取り出せば、シート名だけが得られるわけです。
■ こんな人におすすめ
- 昔ながらの Excel 関数の組み合わせに慣れている方
RIGHT、LEN、FINDでの文字数計算が苦にならない方- どのバージョンの 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は
REPLACEやFINDを使って不要な部分を削除します。
- Excel 365なら
- フォルダの場所(パス)だけ → 「[」より前だけを切り取ります。
- Excel 365なら
TEXTBEFORE(...,"[") - 古いExcelなら
LEFT(..., FIND("[",...)-1 )
- Excel 365なら
最初は数式が長く感じるかもしれませんが、実際は「どこを切り取り、どこを削除するか」を決めるだけの単純な作業です。
使っているExcelのバージョンに合わせて始めてみてください。
文字列操作に慣れると、ファイル名やパスを表示したり、自動化の仕組みに組み込んだりすることも簡単になります。
Excelでシート名をセルに表示する関数に関するよくある質問と答え
シート名をセルに表示する関数に関するよくある質問と答えをまとめました。
CELL("filename")の仕組み
バージョンや互換性について
ファイル名やフォルダの場所を引き出すときの疑問
ファイルの複製や共有関連
その他Excelに関する記事
その他Excelに関する記事はこちらです。是非御覧ください。
-
エクセル(Microsoft Office Excel)
xls(古いエクセル)からxlsx(新しいエクセル)に変換する方法
こんな人にオススメの記事です xls形式からxlsx形式に変換したい人 新しいエクセルファイルに変換したい人 古いエクセル形式(.xls)では行や列が不足している人 エクセ... -
エクセル(Microsoft Office Excel)


【エクセル】ハイパーリンクを簡単に解除する方法
こんな人にオススメの記事です セルのハイパーリンクを削除(解除)したい人 入力した文字が自動的にハイパーリンクになる設定を解除したい人 エクセルで作業をしている... -
エクセル(Microsoft Office Excel)


【Excel】数値を千円単位、百万円単位で表示する方法|書式設定で簡単
この記事では、Excelの「セルの書式設定」を使い、決算資料や売上報告書などで使う「1,234,567」といった数値を、「1,235千円」や「1百万円」のように、千円単位・百万... -
エクセル(Microsoft Office Excel)


【Excel】目次から別シートの特定セルにジャンプできるハイパーリンクの作り方
この記事では、Excelのハイパーリンク機能を使い、別のシートにある特定のセルへジャンプするリンクの設定方法をわかりやすく解説します。 「あのデータ、どのシートだ...
最後までご覧いただき、ありがとうございました。
記事の内容は独自検証に基づくものであり、MicrosoftやAdobeなど各ベンダーの公式見解ではありません。
環境によって結果が異なる場合がありますので、参考のうえご利用ください。
誤りのご指摘・追記のご要望・記事のご感想は、記事のコメント欄またはこちらのお問い合わせフォームからお寄せください。個人の方向けには、トラブルの切り分けや設定アドバイスも実施します。
※Microsoft、Windows、Adobe、Acrobat、Creative Cloud、Google Chromeほか記載の製品名・サービス名は各社の商標または登録商標です。










からxlsx(新しいエクセル)に変換する方法-300x169.png)

コメント