Note: The other languages of the website are Google-translated. Back to English

Excelでフルパスからファイル名をすばやく抽出するにはどうすればよいですか?

ファイルパスのリストを含むワークシートがあるとすると、次のスクリーンショットのように、各パスからファイル名(最後の円記号の右側)だけを抽出します。 このタスクに対処するための簡単なトリックはありますか?

Excelの数式でフルパスからファイル名を抽出します
ユーザー定義関数を使用してフルパスからファイル名を抽出します
VBAコードを使用してフルパスからファイル名を抽出します


Excelの数式でフルパスからファイル名を抽出します

Excelでは、次の式を使用して、フルパスからファイル名のみをすばやく抽出できます。

空白のセルを選択し、以下の数式を入力して、を押します。 入力します キー。

=MID(A1,FIND("*",SUBSTITUTE(A1,"\","*",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))+1,LEN(A1))

ヒント:A1は、ファイル名を抽出するセルです)、Enterボタンを押してから、塗りつぶしハンドルをドラッグして、目的の塗りつぶし範囲にします。 その後、各セルからファイル名が抽出されます。

ドキュメント抽出名1


ユーザー定義関数を使用してフルパスからファイル名を抽出します

次のユーザー定義関数を使用すると、ファイル名を簡単かつ迅速に取得できます。

1。 を押し続けます Alt + F11 キーを押して Microsoft Visual Basic forApplicationsウィンドウ.

2に設定します。 OK をクリックします。 インセット > モジュール、次のコードをに貼り付けます モジュールウィンドウ.

Function FunctionGetFileName(FullPath As String) As String
'Update 20140210
Dim splitList As Variant
splitList = VBA.Split(FullPath, "\")
FunctionGetFileName = splitList(UBound(splitList, 1))
End Function

3. 他の + Q を閉じるためのキー アプリケーション向け Microsoft Visual Basic ウィンドウを開き、ワークシートに戻ります。 空白のセル(たとえばB1)に、次の数式を入力して、 入力します キー。

=FunctionGetFileName(A1)

doc-extract-filenames1

次に、セルB1を再度選択し、塗りつぶしハンドルをこの数式を適用する範囲にドラッグすると、次の結果としてすべてのファイル名がフルパスから抽出されます。

doc-extract-filenames1


VBAコードを使用してフルパスからファイル名を抽出します

ユーザー定義関数に加えて、VBAコードはファイル名の抽出にも役立ちます。 このようにしてください:

1。 を押し続けます Alt + F11 キーを押して Microsoft Visual Basic forApplicationsウィンドウ.

2に設定します。 OK をクリックします。 インセット > モジュール、モジュールウィンドウに次のコードを貼り付けます。

Sub GetFileName()
'Update 20140210
Dim Rng As Range
Dim WorkRng As Range
Dim splitList As Variant
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
For Each Rng In WorkRng
    splitList = VBA.Split(Rng.Value, "\")
    Rng.Value = splitList(UBound(splitList, 1))
Next
End Sub

3。 次に、 F5 このコードを実行するためのキーを押し、ファイル名を抽出する範囲を選択します。スクリーンショットを参照してください。

doc-extract-filenames1

4。 そして、 OK、ファイル名は次のように選択から抽出されています。

注意:このVBAコードを使用すると、元のデータが破棄されるため、このコードを適用する前にXNUMXつコピーする必要があります。


最高のオフィス生産性ツール

Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます

  • 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
  • スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
  • セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
  • [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
  • 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
  • テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
  • スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
  • ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
  • 300以上の強力な機能。 Office / Excel2007-2019および365をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 全機能30日間の無料トライアル。 60日間の返金保証。
kteタブ201905

Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性が50%向上し、毎日何百ものマウスクリックが減ります。
officetab下部
コメントを並べ替える
コメント (2)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
数式は#VALUEを上げます! ソースセルに最初からファイル名しかない場合はエラーになります。数式全体をIFERROR関数に埋め込むと、この問題が解決されます。たとえば、= IFERROR( 、A1)
このコメントは、サイトのモデレーターによって最小化されました
とても便利な機能です。 パスに\または/スラッシュが含まれている場合にファイル名が見つかるように、スクリプトを変更する方法はありますか?

基になるパスが\または/(バックスラッシュまたはフォワードスラッシュ)で区切られているさまざまなハイパーリンクを含むスプレッドシートがあります-ファイルへのリンクの一部は、元々Wordのブックマークとして、または内部のファイルへのリンクとして行われたためだと思いますドキュメントサーバー。 それとも、一部のパスリンクが絶対パスリンクと相対パスリンクで作成されているためですか?

例えば:

../../../../ドキュメント/第2四半期/2019/standardcost_widget12345.pdf
or
\ fileserver \ factory23 \ Operations \ Parts_Mgt \ Documents \ 2ndQuarter \ 2019 \ standardcost_widget12345.pdf


getfilename関数を実行すると、ディレクトリまたはフォルダ間の\が付いたパスにあるすべてのファイル名が取得されましたが、/スラッシュが付いたリンクはそのまま返されました。
同様の4番目の関数を変更して追加しましたが、XNUMX行目の「\」を「/」に置き換えてforwardslashgetfilenameと呼び、最初の関数を実行した後、別の列で実行しました。

関数を次々に実行することは難しくありませんが、4行目のsplitList操作のコードを拡張して、「\」または「/」の両方を含めることができるかどうか興味がありました。 私はVBAプログラマーではありませんが、splitList = VBA.Split(FullPath、 "\" or "/")を試しましたが、機能しませんでした。

考え? 私はそのいくつかの単純な構文を想定しています-私はこの時点では無知です...しかし私はインターウェブを突っつい始めます...

Tks!
ここにはまだコメントが投稿されていません
あなたのコメントを残す
ゲストとして投稿
×
この投稿を評価:
0   文字
推奨される場所