Concatenar el texto de varias celda dependiendo de si está o no vacía

Tengo dos archivos de excel con referencias en las columnas A de cada uno.

En el fichero IMÁGENES.XLSX tengo además a partir de la columna G, los nombres de unas imágenes. Es decir en la columna A, está la referencia "A0011X", y en la G el nombre de un fichero de imagen A0011X.JPG, en la H está A0011X_002.JPG, en la I tengo la A0011X_003.JPG y así sucesivamente. Algunas referencias tienen una, otras dos y otras cinco y hasta diez imágenes. A veces con columnas sin imagen en medio (te adjunto instantánea del fichero IMÁGENES.XLSX).

En el fichero ORIGEN.XLSX tengo las referencias en la columna A, como te dije.

La macro debe recorrer la columna A de referencias del fichero ORIGEN.XLSX y buscar la misma referencia en la columna A del fichero IMÁGENES.XLSX.

Una vez encuentre la misma referencia debe crear una cadena de texto de la forma

\img\santi\A0011X.JPG,\img\santi\A0011X_002.JPG,\img\santi\A0011X_008.JPG

, montarla y dejarla en la celda F de esa fila del fichero de IMÁGENES, y colocarla también en la fila de la referencia, columna AD del fichero ORIGEN.XLSX

1 respuesta

Respuesta
1

Te anexo la macro, revisa los nombres de los libros y de las hojas de cada libro.

Los 2 libros deberán estar abiertos.

Pon la macro en el libro "Origen"

Sub Concatenar()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1")
    Set l2 = Workbooks("imagenes.xlsx")
    Set h2 = l2.Sheets("Hoja1")
    For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
        Set b = h2.Range("A:A").Find(h1.Cells(i, "A"))
        If Not b Is Nothing Then
            cad = ""
            For j = 7 To h2.Cells(b.Row, Columns.Count).End(xlToLeft).Column
                If h2.Cells(b.Row, j) <> "" Then
                    cad = cad & "\img\santi\" & h2.Cells(b.Row, j) & ","
                End If
            Next
            cad = Left(cad, Len(cad) - 1)
            h2.Cells(b.Row, "F") = cad
            h1.Cells(i, "AD") = cad
        End If
    Next
End Sub

Recibe un cordial saludo y felices fiestas! Dante Amor

No olvides valorar la respuesta.

Dante,

Primero agradecerte tu esfuerzo y presteza.

Comentarte que me da este error que te adjunto.

Además si coloco la macro en el fichero origen.xlsx no me la guarda si quiero mantener este formato de archivo. Necesitaría guardarla en un fichero de macros aparte, que me abriera ambos ficheros origen.xlsx e imagenes.xlsx, hiciese la operación y los cerrase después guardando los cambios, para mantenerlos con XLSX, si es que puede ser, claro, y si no te es mucho engorro, que ya bastante has hecho.

Te mando los ficheros por correo-e para que puedas verlo. Creo haberlo explicado bien, aunque es posible que haya omitido algo. No sé, pero creo que es mejor que tengas los ficheros para poder evaluarlo.

Gracias mil.

PD: Yo en cualquier caso te puntúo ya...

Tienes celdas combinadas o celdas que tienen error, ejemplo: #N/a o algo que empiece con #

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas