Excel関数 逆引き集 | ファイル名取得 → CELL

Excel
スポンサーリンク

概要

「このブックのファイル名をセルに表示したい」
「ファイル名を文章に組み込みたい」
「ファイル名+シート名を自動で取得したい」

こういうときに使えるのが CELL 関数(”filename”) です。

CELL(“filename”) は、
フルパス+ブック名+シート名 を文字列として返す特殊な関数で、
そこから ファイル名だけを取り出す のが“ファイル名取得”の基本テクニックです。

ここでは、初心者でも理解しやすいように、
CELL 関数を使ったファイル名取得の仕組みとテンプレートを、例題つきで丁寧に解説します。


CELL(“filename”) の基本

返ってくる文字列の構造

ブックが保存されている場合、CELL(“filename”) は次のような文字列を返します。

C:\Users\...\Documents\Book1.xlsx]Sheet1

つまり、

  • フルパス
  • ブック名(Book1.xlsx)
  • ]
  • シート名(Sheet1)

という構造です。

ファイル名だけを取り出すには、
この文字列から 「最後の \ から ] の直前まで」 を抜き出す必要があります。


基本パターン:ファイル名だけを取り出す

ファイル名取得のテンプレート

=MID(
 CELL("filename"),
 FIND("[",CELL("filename"))+1,
 FIND("]",CELL("filename")) - FIND("[",CELL("filename")) - 1
)

CELL(“filename”) の返す文字列は実際には
C:\...\[Book1.xlsx]Sheet1
のように [ファイル名] の形式になっています。

そのため、

  • [ の位置を探す
  • ] の位置を探す
  • その間の文字列を取り出す

という流れでファイル名を抽出します。


応用1:ファイル名を文章に組み込む

例:「このファイル名は Book1.xlsx です。」と表示したい

="このファイル名は " &
 MID(
   CELL("filename"),
   FIND("[",CELL("filename"))+1,
   FIND("]",CELL("filename")) - FIND("[",CELL("filename")) - 1
 ) &
 " です。"

ファイル名を説明文に入れたいときに便利です。


応用2:ファイル名+シート名を取得する

CELL(“filename”) の返す文字列には、
ファイル名とシート名が両方含まれています。

例:ファイル名+シート名をそのまま表示

=CELL("filename")

結果例:

C:\Users\...\Book1.xlsx]Sheet1

「どのファイルのどのシートか」を確認したいときに便利です。


応用3:フルパス込みのファイル名を取得する

ファイル名だけでなく、
フルパス+ファイル名 を取得したい場合は、
「]」より前の部分を取り出します。

=LEFT(
 CELL("filename"),
 FIND("]",CELL("filename")) - 1
)

結果:

C:\Users\...\Book1.xlsx

応用4:LET を使ってファイル名抽出をスッキリ書く

MID と FIND を何度も書くと長くなるので、
LET を使うと読みやすくなります。

=LET(
 txt, CELL("filename"),
 s, FIND("[",txt),
 e, FIND("]",txt),
 MID(txt, s+1, e-s-1)
)
  • txt に CELL(“filename”) を保存
  • s に “[” の位置
  • e に “]” の位置
  • MID でファイル名だけ抽出

構造が明確で、修正しやすい書き方です。


ファイル名取得の“型”まとめ

ファイル名だけ取得

=MID(CELL("filename"), FIND("[",CELL("filename"))+1, FIND("]",CELL("filename"))-FIND("[",CELL("filename"))-1)

ファイル名+シート名

=CELL("filename")

フルパス+ファイル名

=LEFT(CELL("filename"), FIND("]",CELL("filename"))-1)

LET で読みやすく

=LET(txt,CELL("filename"), MID(txt, FIND("[",txt)+1, FIND("]",txt)-FIND("[",txt)-1))

例題

問題1

現在のブックの ファイル名だけ を取得したいです。
CELL と MID、FIND を使った式を書いてください。

=MID(CELL("filename"), FIND("[",CELL("filename"))+1, FIND("]",CELL("filename"))-FIND("[",CELL("filename"))-1)

問題2

A1 に
このファイル名は ◯◯ です。
と表示したいです。
CELL と文字列結合を使った式を書いてください。

="このファイル名は " &
 MID(CELL("filename"), FIND("[",CELL("filename"))+1, FIND("]",CELL("filename"))-FIND("[",CELL("filename"))-1) &
 " です。"

問題3

CELL(“filename”) の結果(フルパス+ファイル名+シート名)をそのまま表示したいです。
式を書いてください。

=CELL("filename")

問題4

CELL(“filename”) の結果から、
フルパス+ファイル名 だけを取り出したいです。
LEFT と FIND を使った式を書いてください。

=LEFT(CELL("filename"), FIND("]",CELL("filename"))-1)

問題5

LET を使い、
txt=CELL(“filename”)
として、ファイル名だけを取り出す式を書いてください。

=LET(
 txt, CELL("filename"),
 MID(txt, FIND("[",txt)+1, FIND("]",txt)-FIND("[",txt)-1)
)

CELL(“filename”) は「ファイル名取得」の定番テクニックです。
ファイル名をタイトル・ラベル・説明文に自動反映させたいときに非常に便利なので、
ぜひ“ファイル名取得の型”として覚えておいてください。

Excel
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました