Macro para seleccionar parte de las ultimas 68 filas con datos y pegar la selección en otra hoja

Necesitaría una macro que seleccionase, copiara y pegara en un rango fijo de otra hoja lo seleccionado. La selección sería las ultimas 68 filas ( columnas A, B, C y D) de una lista de datos que va aumentando día a día.

Respuesta
1

Te puede aportar algo más a lo ya dicho este tutorial

https://youtu.be/UuyFcJnv5MM    

2 respuestas más de otros expertos

Respuesta
1

H   o    l   a:

Te anexo la macro, cambia en la macro "Hoja1" y "Hoja2" por los nombres de tus hojas.

La macro pega las últimas 68 filas de la hoja1 en la celda A1 de la hoja2. Si quieres que siempre se peguen en otra celda, por ejemplo en la D4, cambia esta línea:

    h1.Range("A" & n & ":D" & wmax).Copy h2.Range("A" & u2)

Por esta:

 H1.Range("A" & n & ":D" & wmax). Copy h2. Range("D4")

Si quieres que se peguen después de la última fila con datos, entonces borra de la macro esta línea:

    u2 = 1

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Hola, Dante...

Muchísimas gracias por tu rápida respuesta, pero no me aparece la macro, solo me aparecen las líneas que tengo que cambiar para las otras opciones que me propones.

Gracias y un saludo

Va la macro

Sub Copiar_Y_Pegar()
'Por. Dante Amor
    Set h1 = Sheets("Hoja1")    'hoja origen
    Set h2 = Sheets("Hoja2")    'hoja destino
    '
    wmax = 0
    For i = 1 To 4
        u = h1.Cells(Rows.Count, i).End(xlUp).Row
        If u > wmax Then wmax = u
    Next
    '
    If wmax < 68 Then
        n = 1
    Else
        n = wmax - 67
    End If
    wmax = 0
    For i = 1 To 4
        u2 = h1.Cells(Rows.Count, i).End(xlUp).Row
        If u2 > wmax Then wmax = u
    Next
    u2 = 1
    h1.Range("A" & n & ":D" & wmax).Copy h2.Range("A" & u2)
    MsgBox "Copia realizada"
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Respuesta
1

Prueba esta macro solo cambia el nombre de las hojas y el rango b2 por el que estés usando y listo

Sub copia()
Set ho = Worksheets("hoja1")
Set hd = Worksheets("hoja2")
Set origen = ho.Range("b2").CurrentRegion

With origen
Set destino = hd.Range("b2").CurrentRegion
filas = destino.Rows.Count
If filas = 1 Then destino.Resize(68, .Columns.Count).Value = _
.Rows(.Rows.Count - 68 + 1).Resize(68, .Columns.Count).Value
If filas > 1 Then destino.Rows(destino.Rows.Count + 1).Resize(68, .Columns.Count).Value = _
.Rows(.Rows.Count - 68 + 1).Resize(68, .Columns.Count).Value
End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas