Excel: テキストから複数のファイル パスを削除する方法

Excel: テキストから複数のファイル パスを削除する方法

スプレッドシートにアイテム画像を参照する行が 2000 行あり、ファイル パスを削除する必要がありますが、一部のフィールドには 1 つのセルに複数の画像参照があるため、複雑な例は次のようになります。

/2/0/2099-1.jpg、/2/0/2099-2.jpg、/2/0/2099-3.jpg、/m/a/male_headless_mannequin_-_arms_folded.jpg

次のようになります:

2099-1.jpg、2099-2.jpg、2099-3.jpg、男性_頭なし_マネキン_-_腕を組んだ.jpg

ただし、画像参照は 1 つだけになります。例:

/3/1/31-222-007.jpg、

式:

> =MID(AA2,FIND("*",SUBSTITUTE(AA2,"/","*",LEN(AA2)-LEN(SUBSTITUTE(AA2,"/",""))))+1,LEN(AA2))

jpg が 1 つだけの場合にはうまく機能しますが、複数ある場合は行き詰まってしまいます。

ありがとう

答え1

データが にある場合はA1、次を試してください。

=CONCAT(FILTERXML("<t><s>"&SUBSTITUTE(A1,"/","</s><s>")&"</s></t>","//s[substring(., string-length(.) - 3) = '.jpg' or substring(., string-length(.) - 4) = '.jpg,']"))

Excel 2019 を実行する場合は、この数式を CSE する必要があります。Excel O365 を使用している場合は CSE は必要ありませんが、次を使用した短縮バージョンもありますLET()

=LET(X,FILTERXML("<t><s>"&SUBSTITUTE(A1,"/","</s><s>")&"</s></t>","//s"),CONCAT(IF(ISNUMBER(FIND(".jpg",X)),X,"")))

ここに画像の説明を入力してください


ご興味のある方は、リンク下記の私のコメントに記載されているQ&Aに。

答え2

この小さなユーザー定義関数を試してみてください:

Option Explicit

Public Function NoPath(sIn As String) As String
    Dim arr, i As Long, v As String, L As Long
    Dim j As Long
    
    arr = Split(sIn, ",")
    For i = LBound(arr) To UBound(arr)
        v = arr(i)
        L = Len(v)
        For j = L To 1 Step -1
            If Mid(v, j, 1) = "/" Then
                arr(i) = Mid(v, j + 1)
                Exit For
            End If
            Next j
        Next i
        NoPath = Join(arr, ",")
        
End Function

ここに画像の説明を入力してください

ユーザー定義関数(UDF)は非常に簡単にインストールそして次のように使用します:

  1. ALT-F11でVBEウィンドウが開きます
  2. ALT-I ALT-Mで新しいモジュールを開く
  3. 内容を貼り付けてVBEウィンドウを閉じます

ワークブックを保存すると、UDF も一緒に保存されます。2003 以降のバージョンの Excel を使用している場合は、ファイルを .xlsx ではなく .xlsm として保存する必要があります。

取り除くUDF:

  1. 上記のようにVBEウィンドウを開きます
  2. コードを消去する
  3. VBEウィンドウを閉じる

使用Excel からの UDF:

=NoPath(A1)

マクロ全般の詳細については、以下を参照してください。

http://www.mvps.org/dmcritchie/excel/getstarted.htm

そして

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

UDF の詳細については、以下を参照してください。

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

これを機能させるにはマクロを有効にする必要があります。

関連情報