Excel:如何從文字中刪除多個檔案路徑

Excel:如何從文字中刪除多個檔案路徑

我在電子表格中有 2000 行來引用項目圖像,並且需要刪除文件路徑,但某些字段在一個單元格中具有多個圖像引用,因此對於一個複雜的示例:

/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,male_headless_mannequin__-_arms_folded.jpg

但只有一個圖像引用,例如:

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

公式:

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

當只有一張 jpg 時效果很好,但如果有多個,我就會陷入困境。

謝謝

答案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,"")))

在此輸入影像描述


對於有興趣的人來說,關聯我在下面的評論中提到的問答。

答案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 版本,則必須將檔案另存為 .xlsm 而不是 .xlsx

消除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

必須啟用巨集才能使其工作!

相關內容