豚吐露@wiki
Excel関数だけでフルパスからファイル名を取り出す
最終更新:
ohden
-
view
Excel関数だけでフルパスからファイル名を取り出す
Excel 2010
MID使ってるからRIGHTとLEFT使ってdir pathとfile名を取れるように改造。
※『A1』に対象のpath、pathの区切り文字(以降デリミタ)を『/』、最後のデリミタの目印を『★』とした場合です。
※『A1』に対象のpath、pathの区切り文字(以降デリミタ)を『/』、最後のデリミタの目印を『★』とした場合です。
- file名を取りたい場合
=RIGHT(A1, LEN(A1) - FIND("★", SUBSTITUTE(A1, "/", "★", LEN(A1) - LEN(SUBSTITUTE(A1, "/", ""))), 1))
- dir pathを取りたい場合
=LEFT(A1, FIND("★", SUBSTITUTE(A1, "/", "★", LEN(A1) - LEN(SUBSTITUTE(A1, "/", ""))), 1))
一応、自分なりの理解を...
①pathのデリミタを削除した時の長さを求める
②全体の長さから①を引くとデリミタの数が分かる
③SUBSTITUTEの第4引数(置換対象)に②を指定して、n番目に登場するデリミタを任意の文字(今回は★)に置換する。
※nは②の値
④findを使って③で置換した文字(★)の位置を調べる。
⑤RIGHTを使って③で置換した文字までを切り取る。 ※file名を取得
⑤'LEFTを使って③で置換した文字までを切り取る。 ※dir pathを取得
①pathのデリミタを削除した時の長さを求める
②全体の長さから①を引くとデリミタの数が分かる
③SUBSTITUTEの第4引数(置換対象)に②を指定して、n番目に登場するデリミタを任意の文字(今回は★)に置換する。
※nは②の値
④findを使って③で置換した文字(★)の位置を調べる。
⑤RIGHTを使って③で置換した文字までを切り取る。 ※file名を取得
⑤'LEFTを使って③で置換した文字までを切り取る。 ※dir pathを取得
結局、大事なのは、最後のデリミタを見つける
=FIND("★",SUBSTITUTE(A1,"/","★",LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))),1)
って事です。(*´ω`)b
ただ、これだと対象のpathがデリミタを含まなかった場合、エラーになっちゃうんだよね。(ノ∀`)
そこら辺も後々考慮に入れましょう。(`・ω・´)
そこら辺も後々考慮に入れましょう。(`・ω・´)
デリミタ無かった場合を考慮したらくっそ長くなった...(´д`;)
やっぱifの中と外に同じもんがあるのはいただけないな。
やっぱifの中と外に同じもんがあるのはいただけないな。
- file名を取りたい場合
=IF(ISERROR(RIGHT(A1, LEN(A1) - FIND("★", SUBSTITUTE(A1, "/", "★", LEN(A1) - LEN(SUBSTITUTE(A1, "/", ""))), 1))), A1, RIGHT(A1, LEN(A1) - FIND("★", SUBSTITUTE(A1, "/", "★", LEN(A1) - LEN(SUBSTITUTE(A1, "/", ""))), 1)))
- dir pathを取りたい場合
=IF(ISERROR(LEFT(A1, FIND("★", SUBSTITUTE(A1, "/", "★", LEN(A1) - LEN(SUBSTITUTE(A1, "/", ""))), 1))), "", LEFT(A1, FIND("★", SUBSTITUTE(A1, "/", "★", LEN(A1) - LEN(SUBSTITUTE(A1, "/", ""))), 1)))
一応、デリミタ無かった場合を考慮。
file名の方はそのまま表示して、dir pathの方は空欄を表示するようにしてみた。
file名の方はそのまま表示して、dir pathの方は空欄を表示するようにしてみた。
更新日: 2013年07月13日 (土) 18時41分48秒