【Excel】パスからファイル名だけを抽出する6つの簡単な方法
Microsoft Excelで作業していると、長いファイルパスからファイル名だけを抜き出したい場面がよくあります。パスの長さはさまざまで、手作業で削除するのは手間もミスも増えがちです。この記事では、Excelでパスからファイル名を取得するための実践的な方法を6つ、具体例とともにわかりやすく解説します。
Excelでパスからファイル名を取得する6つの方法
ここでは、以下のようなサンプルデータ(セルB5:B11にファイルパスが入力された表)を使って説明します。関数やVBAコードを活用すれば、誰でも簡単にファイル名だけを取り出せます。それでは順番に見ていきましょう。

方法1:「検索と置換」機能を使う(数式不要)
最も手軽なのが、Excel標準の「検索と置換」機能を利用する方法です。数式を一切使わずに、パスからファイル名だけを残すことができます。
手順:
- まず、パスが入力されたセル範囲(B5:B11)を選択します。
- 選択したまま、キーボードで Ctrl + H を押して「検索と置換」ダイアログを開きます。
- 「検索する文字列」ボックスに *\ と入力し、「すべて置換」をクリックします。
- これで、最後の「\」より前の文字がすべて削除され、同じ列内にファイル名だけが残ります。


方法2:LEN・SUBSTITUTE・FIND・MID関数を組み合わせる
数式で確実に抽出したい場合は、LEN、SUBSTITUTE、FIND、MID の各関数を組み合わせる方法が便利です。一見複雑に見えますが、仕組みを理解すれば応用範囲は非常に広いテクニックです。
手順:
- 結果を表示したいセル(C5)を選択し、次の数式を入力します。
=MID(B5,FIND("*",SUBSTITUTE(B5,"\","*",LEN(B5)-LEN(SUBSTITUTE(B5,"\",""))))+1,LEN(B5))
数式の解説:
- LEN(B5):パス全体の文字数を返します(例:34文字)。
- LEN(SUBSTITUTE(B5,"\\","")):「\」を空欄に置き換えた文字列「C:UsersPublicPicturesDeer baby」の文字数を返します(例:30文字)。両者の差(34−30=4)が「\」の個数です。
- SUBSTITUTE(B5,"\\","*",34-30):4番目(最後)の「\」だけを「*」に置き換えます。
- FIND("*",…):置き換えた「*」の位置を検索し、25番目という位置情報を返します。
- MID(B5,25+1,LEN(B5)):26文字目以降をすべて抽出するため、結果として「Deer baby」が得られます。
- Enterキーを押したら、右下の「フィルハンドル」を下方向へドラッグして、他のセルにも数式をコピーしましょう。

方法3:REPT・SUBSTITUTE・RIGHT・TRIM関数を組み合わせる
もう少しシンプルな数式で済ませたいなら、REPT、SUBSTITUTE、RIGHT、TRIM 関数を組み合わせる方法もあります。
手順:
- セル(C5)を選択し、次の数式を入力します。
=TRIM(RIGHT(SUBSTITUTE(B5,"\\",REPT(" ",100)),99))
この数式では、「\」を100個のスペースに置き換えた後、右側から99文字を取り出し、余分なスペースをTRIM関数で削除することで、ファイル名だけを綺麗に取り出しています。
- Enterキーを押し、「フィルハンドル」をドラッグして全セルに適用します。

方法4:拡張子を除いたファイル名を取得する(SUBSTITUTE・LEN・CHAR・FIND・MID・IFERROR)
パスの中には「Deer baby.jpg」のように拡張子が含まれている場合があります。拡張子を除いたファイル名だけが必要なときは、SUBSTITUTE、LEN、CHAR、FIND、MID、IFERROR 関数を組み合わせましょう。
ここでも、拡張子入りのファイルパスが入力されたデータセットを使用します。

手順:
- セル(C5)を選択し、次の数式を入力します。
=IFERROR(MID(B5,FIND(CHAR(1),SUBSTITUTE(B5,"\\",CHAR(1),LEN(B5)-LEN(SUBSTITUTE(B5,"\\",""))))+1,FIND(CHAR(1),SUBSTITUTE(B5,".",CHAR(1),LEN(B5)-LEN(SUBSTITUTE(B5,".",""))))-FIND(CHAR(1),SUBSTITUTE(B5,"\\",CHAR(1),LEN(B5)-LEN(SUBSTITUTE(B5,"\\",""))))-1),"")
- Enterキーを押し、「フィルハンドル」を下へドラッグします。
- 数秒で、拡張子なしのファイル名だけが出力されます。

方法5:ユーザー定義関数(VBA)を作成して取得する
VBA(Visual Basic for Applications)を使えば、独自のユーザー定義関数を作成できます。一度登録しておけば、通常のワークシート関数と同じ感覚で呼び出せるのが大きなメリットです。
手順:
- ワークシート画面で Alt + F11 を押し、「Microsoft Visual Basic for Applications」エディターを開きます。
- メニューの「挿入」から「標準モジュール」を選択します。
- 開いたモジュールに、以下のコードを貼り付けます。
Function GetFileName(FullPath As String) As String
Dim List As Variant
List = VBA.Split(FullPath, "\\")
GetFileName = List(UBound(List, 1))
End Function
- コードを保存し、VBAウィンドウを最小化(または閉じ)ます。
- セル(C5)に自分で定義した関数を入力し、引数としてパスのあるセル(B5)を指定します。
=GetFileName(B5)
- Enterキーを押し、「フィルハンドル」を下方向へドラッグすれば、新しい列にファイル名が出力されます。

方法6:VBAマクロを直接実行して取得する
ユーザー定義関数の作成が難しく感じる場合は、VBAのコードをそのまま実行して一括変換する方法もおすすめです。対象範囲の値が直接ファイル名に書き換わります。
手順:
- 同様に Alt + F11 を押してVBAエディターを開きます。
- 「挿入」から「標準モジュール」を選択します。
- 新しいモジュールに以下のコードを記述し、リボンの「実行(▶)」アイコンをクリックします。
Sub filePath()
Dim filename As String
Dim x As Variant
For Each cell In ActiveSheet.Range("B5:B11")
x = Split(cell.Value, Application.PathSeparator)
filename = x(UBound(x))
cell.Value = filename
Next cell
End Sub
- 実行後、ワークシート上にはパスから抽出されたファイル名だけが表示されます。

注意点
- 方法6のコードでは、処理対象のセル範囲として B5:B11 を指定しています。ご自身のデータに合わせて使う場合は、コード内のセル範囲を必ず変更してください。
- 方法1の置換操作は元に戻せない場合もあるため、実行前にデータのバックアップを取っておくと安心です。
まとめ
この記事では、Excelでパスからファイル名を取得する6つの方法を紹介しました。「検索と置換」を使ったお手軽な方法から、関数を組み合わせた数式、さらにVBAによる自動化まで、目的やスキルレベルに応じて使い分けることができます。練習用ブックをダウンロードして、ぜひ実際に試してみてください。ご不明な点があれば、コメント欄でお気軽にお問い合わせください。Exceldemyチームはいつでもあなたのご質問にお答えします。それでは、楽しいExcelライフを!
-
Excelで壊れたリンクを削除する3つの簡単な方法
Microsoft Excelは非常に強力なソフトウェアです。Excelのツールや機能を活用すれば、データセットに対してさまざまな操作を行うことができます。数式の作成に役立つExcel関数も多数用意されており、教育機関や企業では貴重なデータの管理にExcelファイルが広く活用されています。場合によっては、複数のExcelファイルをリンクさせて、異なるソースからデータを取り込むこともあるでしょう。しかし、リンクはさまざまな理由で切れてしまうことがあり、その結果、作業中のワークシートにエラーが発生します。そこで必要になるのが、壊れたリンクの削除です。この記事では、Excelで壊れたリンクを削除する
-
Excelでデータモデルからデータを取得する2つの簡単な方法
Excelのデータモデルからデータを取り出す便利なテクニックをお探しの方は、ぜひこの記事をご覧ください。データモデルからデータを取得する方法は実にさまざまありますが、本記事では代表的な2つの方法を詳しく解説します。手順を一つずつ丁寧に追って説明しますので、最後まで読んでマスターしましょう。 データモデルとは? データモデルはデータ分析において欠かせない機能です。データモデルを使うと、テーブルなどのデータをExcelのメモリ上に読み込むことができます。さらに、共通の列(キー列)を指定することで、複数のテーブル同士を関連付けることも可能です。データモデルにおける「モデル」という言葉は、各テーブル間