LoginSignup
73

More than 3 years have passed since last update.

[Excel]VBAを使わずに、フルパスからファイル名のみ・パスのみを取得する

Last updated at Posted at 2014-02-14

VBAでしかファイル名のみ、パスのみは取得できないのか?!と嘆いていた同胞に捧げます。

unix ver.

WS000001.JPG

(1) ファイル名のみ

=RIGHT(A1, LEN(A1)-FIND(">",SUBSTITUTE(A1,"/",">",LEN(A1)-LEN(SUBSTITUTE(A1,"/","")))))

(2) パスのみ

=LEFT(A1,FIND(">",SUBSTITUTE(A1,"/",">",LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))),1)-1)

win ver.

WS000002.JPG

(1) ファイル名のみ

=RIGHT(A1, LEN(A1)-FIND(">",SUBSTITUTE(A1,"\",">",LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))))

(2) パスのみ

=LEFT(A1,FIND(">",SUBSTITUTE(A1,"\",">",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))),1)-1)

こめんと

  • 数式の中にある「>」は、中間的に利用しています。パス中に出てこない文字列であればなんでもOKです。
  • 一部の探しもとめていた人に喜ばれるTipsです。

参考

変更履歴

2017/10/10

  • 中間的に利用している文字を「★」から「>」に変更しました。
  • 元記事追加

2016/01/05

(2)のファイル名のみ取得の関数を更新しました。短くなりました。以前の関数は以下のような感じ。

=MID(A1,FIND(">",SUBSTITUTE(A1,"/",">",LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))),1)+1,LEN(A1)-FIND(">",SUBSTITUTE(A1,"/",">",LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))),1))

一番最初のMID関数を実施するのに、(2)のパスのみの文字列の長さを取っていましたが、以下のようなことをしています。

  1. A1からパスのみの文字列をSUBSTITUTEで空白に変換する
  2. MID関数で1文字目以降の文字列を取得する

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
73