概要
「このブックのファイル名をセルに表示したい」
「ファイル名を文章に組み込みたい」
「ファイル名+シート名を自動で取得したい」
こういうときに使えるのが 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”) は「ファイル名取得」の定番テクニックです。
ファイル名をタイトル・ラベル・説明文に自動反映させたいときに非常に便利なので、
ぜひ“ファイル名取得の型”として覚えておいてください。
