Excelに、ファイルとフォルダーのパスを持つ単一の列があります。例えばC:\ 1_Folder\2_Folder\3_Folder\my_file.txt
最終フォルダの名前を抽出して、これを新しい列に配置したいと思います。この例では、3_Folderです。
これは、VBAではなく数式を使用して実現できますか?
編集:ネストされたフォルダーの数は異なる場合があります。
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)
私はこのようなタスクに regex addin を使用し、正規表現を使用します。
=RegExReplace(A1,".*\\([^\\]*)\\[^\\]*","$1")
-これは最後の\
(実際には必要に応じて最後のフォルダー)の前の部分文字列を抽出します
この回答は、 非常によく似た質問 に対する受け入れられた回答に基づいています。
1つの数式でそれが必要な場合は、次を使用できます。
=RIGHT(A6,LEN(A6)+1-FIND("@",SUBSTITUTE("\"&A6,"\","@",(LEN(A6)-LEN(SUBSTITUTE("\"&A6,"\",""))+1))))
...これは基本的に、バックスラッシュをすべて削除して長さを比較することにより、バックスラッシュの数を計算します。その番号を使用して最後のオカレンスを「@」に置き換えてから振り返り、「@」の位置を見つけてRIGHT数式に入力し、最後の円記号の末尾の部分文字列を取得します。ソースでバックスラッシュがゼロの場合を処理するために、追加のバックスラッシュと「+1」が追加されています。バックスラッシュがない場合は、元の文字列が返されます。
データにすでに「@」が含まれている場合は、別の置換文字を選択する必要があります。