Ich habe Tausende von Zeilen in einer Tabelle, um auf ein Artikelbild zu verweisen, und ich muss den Dateipfad entfernen, aber einige Felder haben mehrere Bildverweise in einer Zelle. Hier ein komplexes Beispiel:
/2/0/2099-1.jpg,/2/0/2099-2.jpg,/2/0/2099-3.jpg,/m/a/männliche_kopflose_Schaufensterpuppe_-_mit_verschränkten_Armen.jpg
muss so aussehen:
2099-1.jpg,2099-2.jpg,2099-3.jpg,männliche_kopflose_Schaufensterpuppe_-_mit_verschränkten_Armen.jpg
hat aber nur einen Bild-Ref, zB:
/3/1/31-222-007.jpg,
Die Formel:
> =MID(AA2,FIND("*",SUBSTITUTE(AA2,"/","*",LEN(AA2)-LEN(SUBSTITUTE(AA2,"/",""))))+1,LEN(AA2))
Funktioniert einwandfrei, wenn nur ein JPG vorhanden ist, aber bei mehreren stecke ich fest.
Danke
Antwort1
Versuchen Sie mit den Daten in A1
Folgendes:
=CONCAT(FILTERXML("<t><s>"&SUBSTITUTE(A1,"/","</s><s>")&"</s></t>","//s[substring(., string-length(.) - 3) = '.jpg' or substring(., string-length(.) - 4) = '.jpg,']"))
Wenn Sie Excel 2019 verwenden, müssen Sie diese Formel mit CSE ausführen. Wenn Sie Excel O365 verwenden, müssen Sie CSE nicht ausführen, aber es gibt auch eine kürzere Version mit LET()
:
=LET(X,FILTERXML("<t><s>"&SUBSTITUTE(A1,"/","</s><s>")&"</s></t>","//s"),CONCAT(IF(ISNUMBER(FIND(".jpg",X)),X,"")))
Für Interessierte, einVerknüpfungzu den in meinem Kommentar unten erwähnten Fragen und Antworten.
Antwort2
Probieren Sie diese kleine benutzerdefinierte Funktion aus:
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
Benutzerdefinierte Funktionen (UDFs) sind sehr einfach zuInstallierenund verwenden Sie:
- ALT-F11 öffnet das VBE-Fenster
- ALT-I ALT-M öffnet ein neues Modul
- Füge das Material ein und schließe das VBE-Fenster
Wenn Sie die Arbeitsmappe speichern, wird die UDF mit gespeichert. Wenn Sie eine Version von Excel verwenden, die älter als 2003 ist, müssen Sie die Datei als .xlsm und nicht als .xlsx speichern.
Zuentfernendie UDF:
- Öffnen Sie das VBE-Fenster wie oben
- Löschen Sie den Code
- Schließen Sie das VBE-Fenster
Zuverwendendie UDF aus Excel:
=NoPath(A1)
Weitere Informationen zu Makros im Allgemeinen finden Sie unter:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
Und
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
Einzelheiten zu UDFs finden Sie unter:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
Damit dies funktioniert, müssen Makros aktiviert sein!