Copiar en una hoja los últimos datos de una hoja filtrada VBA

Estoy intentando crear una macro que me permita copiar los últimos datos de una hoja que esta filtrada; es decir eh filtrado una serie de datos y los resultados son miles pero yo solo necesito copiar las últimas 8 o 12 o 15 filas de datos de este resultado del filtro y pegarlas en otra hoja.

1 respuesta

Respuesta
2

Después de aplicar el filtro en tu hoja1, ejecuta la siguiente macro:

Sub Copiar_Filas()
'Por.Dante Amor
    '
    Application.ScreenUpdating = False
    Set h1 = Sheets("Hoja1")    'hoja con los datos
    Set h2 = Sheets("Hoja2")    'hoja destino
    '
    col = "D"                   'columna donde tienes el filtro
    f_ini = 2                   'fila inicial de datos
    filas = 15                  'número de filas a copiar
    f_des = 2                   'fila destino en la hoja 2
    '
    h2.Rows(f_des & ":" & Rows.Count).ClearContents
    u = h1.Range(col & Rows.Count).End(xlUp).Row
    If u < f_ini Then
        MsgBox "No existen datos a copiar"
        Exit Sub
    End If
    cuenta = h1.Range(h1.Cells(f_ini, col), h1.Cells(u, col)).SpecialCells(xlCellTypeVisible).Count
    If cuenta < 15 Then
        h1.Rows(f_ini & ":" & u).Copy
        h2.Range("A" & f_des).PasteSpecial xlValues        'celda destino en hoja2
    Else
        contador = 0
        For i = u To f_ini Step -1
            If h1.Range(col & i).EntireRow.Hidden = False Then
                contador = contador + 1
                If contador = filas Then Exit For
            End If
        Next
        'fila = h1.Range(h1.Cells(u - filas, col), h1.Cells(u, col)).SpecialCells(xlCellTypeVisible).Address
        h1.Rows(i & ":" & u).Copy
        h2.Range("A2").PasteSpecial xlValues
    End If
    Application.ScreenUpdating = True
    Application.CutCopyMode = False
    MsgBox "Filas copiadas"
End Sub

Actualiza en la macro los siguientes datos para copiar a la hoja2:

    Set h1 = Sheets("Hoja1")    'hoja con los datos
    Set h2 = Sheets("Hoja2")    'hoja destino
    '
    col = "D"                   'columna donde tienes el filtro
    f_ini = 2                   'fila inicial de datos
    filas = 15                  'número de filas a copiar
    f_des = 2                   'fila destino en la hoja 2

Avísame cualquier duda.

.

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas