web-dev-qa-db-ja.com

Excelでフォルダパスを分割して、最終的なフォルダを返します

Excelに、ファイルとフォルダーのパスを持つ単一の列があります。例えばC:\ 1_Folder\2_Folder\3_Folder\my_file.txt

最終フォルダの名前を抽出して、これを新しい列に配置したいと思います。この例では、3_Folderです。

これは、VBAではなく数式を使用して実現できますか?

編集:ネストされたフォルダーの数は異なる場合があります。

3
BobJim

FINDおよびMIDテキスト関数を使用できます。これは、可変数のフォルダーで機能します

パステキスト_C:\1_Folder\2_Folder\3_Folder\my_file.txt_

最後のスラッシュ(B1)の次の位置を見つける:FIND("|",SUBSTITUTE(A1,"\","|",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))-1))

最後のスラッシュ(C1)の位置を見つける:FIND("\",A1,B1+1)

最後から2番目と最後のスラッシュの間の文字を取得します:MID(A1,B1+1,(C1-B1)-1)

2
Todd

私はこのようなタスクに regex addin を使用し、正規表現を使用します。

=RegExReplace(A1,".*\\([^\\]*)\\[^\\]*","$1")-これは最後の\(実際には必要に応じて最後のフォルダー)の前の部分文字列を抽出します

enter image description here

2
Máté Juhász

この回答は、 非常によく似た質問 に対する受け入れられた回答に基づいています。

1つの数式でそれが必要な場合は、次を使用できます。

=RIGHT(A6,LEN(A6)+1-FIND("@",SUBSTITUTE("\"&A6,"\","@",(LEN(A6)-LEN(SUBSTITUTE("\"&A6,"\",""))+1))))

...これは基本的に、バックスラッシュをすべて削除して長さを比較することにより、バックスラッシュの数を計算します。その番号を使用して最後のオカレンスを「@」に置き換えてから振り返り、「@」の位置を見つけてRIGHT数式に入力し、最後の円記号の末尾の部分文字列を取得します。ソースでバックスラッシュがゼロの場合を処理するために、追加のバックスラッシュと「+1」が追加されています。バックスラッシュがない場合は、元の文字列が返されます。

データにすでに「@」が含まれている場合は、別の置換文字を選択する必要があります。

0
GuitarPicker