2

フォルダ名とファイル名の長いリストを含む列があります。フォルダとファイル名は異なります。列から別の列にファイル名を抽出したいのですが、Excelでこれを行うのに苦労しています。

列データの例:(公開してはならない詳細を非表示にするように変更されたファイルとフォルダー)

c:\data\1\nc2\media\ss\system media\ne\d - wnd enging works v5.swf
c:\data\1\nc2\media\ss\special campaigns\samns dec 2012\trainerv5.swf
C:\Local\Messages\17362~000000001~20131231235910~4.MUF
c:\data\1\nc2\media\ss\system media\tl\nd - tfl statusv4.swf
c:\data\1\nc2\media\ss\system media\core\ss_bagage v2.swf

「\」の右から最初の出現まで検索できるはずですが、構文がわかりません。

どうもありがとう

アップデート:

数式=RIGHT(B2,LEN(B2)-SEARCH("\",B2,1))は機能するはずですが、間違った結果が表示されます。しかし、「。」を検索するように変更すると、ファイル拡張子を引き出します。だから私が見逃している重要なアイテムがあります

4

4 に答える 4

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

任意の列にコピーして、b と言って下にドラッグします。

于 2013-01-03T10:15:06.797 に答える
1

解析するファイルが多数ある場合は、VBA の方が効率的です。モジュールを作成し、以下を追加します。

Function GetFileName(file As String) As String

    Set fso = CreateObject("Scripting.FileSystemObject")

    GetFileName = fso.GetFileName(file)

End Function
于 2013-01-03T10:20:57.763 に答える
0

より一般的な文字列解析が必要で、VBA を少し使用したい場合は、SuperUser のこの質問に対する Jamie Bull の回答でsplit提案されている関数を使用できます。

彼の関数は、選択した任意の文字を使用して文字列をセグメントに分割し、選択したセグメントを返します。

便利な参照用に、Jamie の関数をここにコピーしました。

Function STR_SPLIT(str, sep, n) As String
    Dim V() As String
    V = Split(str, sep)
    STR_SPLIT = V(n - 1)
End Function
于 2014-02-18T18:26:59.020 に答える
0

文字列の最後のスラッシュに続くテキストを取得するには、次の式を含むいくつかの方法があります。この例では、H15 が検索する文字列を含むセルです。スラッシュが見つからない場合は、"-" (ダッシュ) 文字を返します。

   =iferror(RIGHT(H15,LEN(H15)-SEARCH("|",SUBSTITUTE(H15,"/","|",LEN(H15)-LEN(SUBSTITUTE(H15,"/",""))))),"-")

この式は、最初に文字列内のスラッシュの数を見つけます。LEN は文字列の全長を示し、SUBSTITUTE を使用して元の文字列のスラッシュを削除した後のスラッシュなしの文字列の LEN を示します。違いはスラッシュの数です。

次に、最後のスラッシュをマーカー文字 (私は "|" を使用) に置き換えます。マーカーを検索すると、スラッシュの後のビットが始まる場所がわかります。文字列の全長からマーカーの開始位置を引いた長さは、右から何文字を取るべきかを示します。

于 2013-01-03T10:42:22.353 に答える