Excel: cómo eliminar múltiples rutas de archivos del texto

Excel: cómo eliminar múltiples rutas de archivos del texto

Tengo miles de líneas en una hoja de cálculo para hacer referencia a la imagen de un elemento y necesito eliminar la ruta del archivo, pero algunos campos tienen varias referencias de imágenes en una celda, por lo que para un ejemplo complejo:

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

necesita verse así:

2099-1.jpg,2099-2.jpg,2099-3.jpg,maniquí_masculino_sin_cabeza_-_brazos_plegados.jpg

pero tendrá solo una referencia de imagen, por ejemplo:

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

La formula:

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

Funciona muy bien cuando solo hay un jpg, pero si hay varios, me quedo atascado.

Gracias

Respuesta1

Con los datos en A1, intente:

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

Si ejecuta Excel 2019, necesitará realizar CSE en esta fórmula. Si uno tiene Excel O365, no necesita CSE, pero también hay una versión más corta que usa LET():

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

ingrese la descripción de la imagen aquí


Para aquellos interesados, unenlacea las preguntas y respuestas mencionadas en mi comentario a continuación.

Respuesta2

Pruebe esta pequeña función definida por el usuario:

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

ingrese la descripción de la imagen aquí

Las funciones definidas por el usuario (UDF) son muy fáciles deinstalary use:

  1. ALT-F11 abre la ventana VBE
  2. ALT-I ALT-M abre un módulo nuevo
  3. pegue las cosas y cierre la ventana de VBE

Si guarda el libro de trabajo, la UDF se guardará con él. Si está utilizando una versión de Excel posterior a 2003, debe guardar el archivo como .xlsm en lugar de .xlsx.

Aeliminarla UDF:

  1. abrir la ventana VBE como arriba
  2. borrar el código
  3. cerrar la ventana VBE

Ausarla UDF de Excel:

=NoPath(A1)

Para obtener más información sobre las macros en general, consulte:

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

y

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

y para obtener detalles sobre las UDF, consulte:

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

¡Las macros deben estar habilitadas para que esto funcione!

información relacionada