Macro copiar y pegar rangos de celda con condiciones

Estoy realizando una macro desde un libro destino en el que tengo que copiar y pegar rangos de celda de otros tres libros.

El primer rango, la fila en la que acaba varía, pero no he tenido problema para hacerlo.

El segundo rango, tengo la duda de cómo ponerlo para que me lo pegue justo donde acaba el primero, que varía cada vez.

En cuanto al tercer rango, lo tengo que pegar a la derecha del segundo con 5 filas de distancia

¿Alguna ayuda?

1 Respuesta

Respuesta
1

Ayudaría si pones tu macro para saber en dónde están los rangos origen 1, 2 y 3.

Te anexo un ejemplo con comentarios para ayudarte y puedas adaptarlo a tu macro.

Sub Copiar_Rangos()
'   Por Dante Amor
    '
    Application.ScreenUpdating = False
    Set l1 = ThisWorkbook   'libro origen, libro con la macro
    Set l2 = Workbooks("prueba.xlsx")   'libro destino, debe estar abierto
    '
    Set h1 = l1.Sheets("Hoja1") 'hoja origen del libro origen
    Set h2 = l2.Sheets("Hoja1") 'hoja destino del libro destino
    '
    'copia rango 1
    u1 = h1.Range("A" & Rows.Count).End(xlUp).Row
    h1.Range("A2:C" & u1).Copy
    'pega rango 1
    h2.Range("A2").PasteSpecial xlValues
    '
    'copia rango 2
    u1 = h1.Range("D" & Rows.Count).End(xlUp).Row
    h1.Range("D2:F" & u1).Copy
    'pega rango 2
    'obtiene la última fila con datos de la columna A del primer rango y le suma 1
    u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
    h2.Range("A" & u2).PasteSpecial xlValues
    '
    'copia rango 3
    u1 = h1.Range("G" & Rows.Count).End(xlUp).Row
    h1.Range("G2:I" & u1).Copy
    'pega rango 3
    'obtiene la última fila con datos de la columna A y le suma 6 para que tenga
    '5 filas de distancia
    u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 6
    h2.Range("A" & u2).PasteSpecial xlValues
    '
    Application.ScreenUpdating = True
    Application.CutCopyMode = False
    MsgBox "Fin"
End Sub

Muchas gracias por la respuesta, está muy clara la explicación y he podido ajustarla a los datos reales de mi Excel

Realmente, lo estoy haciendo a partir del libro destino (es decir, el de destino sería ThisWorkbook, pero me ha ayudado mucho tu aclaración

Una duda, el último rango, no iría 5 filas por abajo del rango 2, sino a la derecha, a 5 columnas de distancia.

Una de las columnas del rango 2, tiene el texto NC.

Entonces, estoy pensando en hacerlo con un if, que me busque en qué fila está el primer NC, y entonces, me copie los datos del rango 3 seis columnas a la derecha

Por ejemplo, si el rango 2 termina en la columna "F" entonces el pegado del rango 3 va en la columna L

 'copia rango 2
    u1 = h1.Range("D" & Rows.Count).End(xlUp).Row
    h1.Range("D2:F" & u1).Copy
    'pega rango 2
    'obtiene la última fila con datos de la columna A del primer rango y le suma 1
    u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
    h2.Range("A" & u2).PasteSpecial xlValues
    '
    'copia rango 3
    u1 = h1.Range("G" & Rows.Count).End(xlUp).Row
    h1.Range("G2:I" & u1).Copy
    'pega rango 3
    h2.Range("L" & u2).PasteSpecial xlValues

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas