Fusionar columnas de distintas hojas en una sola columna

Necesito fusionar cuatro columnas divididas en cuatro hojas distintas, y que vayan construyendo una columna con todos los registros por ejemplo:

Columna Y de la Hoja1

Columna AA de la Hoja2

Columna AC de la Hoja2

Columna X de la Hoja2

Y que en la columna resultante aparezcan todos los registros uno debajo del otro.

Por si sirve de ayuda, he visto macros que fusionan columnas de la misma hoja, por ejemplo ésta:

Sub CombinarColumnas()
Columns("A").Copy Destination:=Columns("D")
NewRowD = Range("D" & Rows.Count).End(xlUp).Row + 1
LastRowB = Range("B" & Rows.Count).End(xlUp).Row
Set CopyRange = Range("B1:B" & LastRowB)
CopyRange.Copy Destination:=Range("D" & NewRowD)
NewRowD = Range("D" & Rows.Count).End(xlUp).Row + 1
LastRowC = Range("C" & Rows.Count).End(xlUp).Row
Set CopyRange = Range("C1:C" & LastRowC)
CopyRange.Copy Destination:=Range("D" & NewRowD)
End Sub

1 respuesta

Respuesta
1

No mencionas en cuál hoja y cuál columna va a quedar la fusión de las hojas.

Modifica en la macro estas líneas para poner la hoja destino y la columna destino:

    Set h = Sheets("Hoja3")                             'hoja destino
    col = "A"                                           'columna destino

Ahora en las siguientes líneas de la macro estoy poniendo las columnas que se van a copiar, cada columna va a acompañanda de su respectiva hoja

 Cols = Array("Y", "AA", "AC", "X") 'columnas origen
 hojas = Array("Hoja1", "Hoja2", "Hoja2", "Hoja2") 'hojas origen

Es decir, la columna "Y" de la "Hoja1"

La "AA" de la "Hoja2"

"AC" de la "Hoja2"

"X" De la "Hoja2"

Como puedes observar en la primera línea pongo las columnas y en la segunda línea pongo la hoja que corresponde a cada columna. Si vas a copiar 5 columnas, quedaría así:

 Cols = Array("Y", "AA", "AC", "X", "B") 'columnas origen
 hojas = Array("Hoja1", "Hoja2", "Hoja2", "Hoja2", "Hoja1") 'hojas origen

Le estoy indicando que la columna B es de la hoja1.

Las columnas se copiarán en el orden que las pusiste, es decir, primero la Y, seguida de la AA, AC y hasta el último la X, si quieres otro orden, simplemente ordena las columnas en esa línea de la macro.


La macro completa:

Sub FusionarColumnas()
'Por.Dante Amor
    Set h = Sheets("Hoja3")                             'hoja destino
    col = "A"                                           'columna destino
    '
    cols = Array("Y", "AA", "AC", "X")                  'columnas origen
    hojas = Array("Hoja1", "Hoja2", "Hoja2", "Hoja2")   'hojas origen
    '
    h.Columns(col).Clear
    For i = LBound(hojas) To UBound(hojas)
        u1 = h.Range(col & Rows.Count).End(xlUp).Row + 1
        u2 = Sheets(hojas(i)).Range(cols(i) & Rows.Count).End(xlUp).Row
        Sheets(hojas(i)).Range(cols(i) & "1:" & cols(i) & u2).Copy h.Range(col & u1)
    Next
    MsgBox "Fin fusionar hojas"
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas