Macro que haga las veces de un filtro avanzado

Tengo una base de datos donde se necesita generar un reporte por fechas.

Foto1: Archivo donde quiero extraer datos a otra hoja

Foto 2: En B2 cada vez que cambie la fecha, con un comando ejecutar me actualice a partir de A8. Si la fecha no coincide con la hoja ruteo el MsgBox seria no existen datos. Asimismo, tenga la opción de borrar todos los registros a partir de A8 sin tocar los encabezados.

1 respuesta

Respuesta
2

Pon la siguiente macro en tu botón

Sub Macro1()
'Por Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("Ruteo")
    Set h2 = Sheets("Resumen")
    If h1.AutoFilterMode Then h1.AutoFilterMode = False
    If h2.Range("B2").Value = "" Or Not IsDate(h2.Range("B2").Value) Then
        MsgBox "Falta indicar la fecha"
        Exit Sub
    End If
    h2.Rows("8:" & Rows.Count).ClearContents
    '
    fec = Format(h2.Range("B2").Value, "mm/dd/yyyy")
    u1 = h1.Range("A" & Rows.Count).End(xlUp).Row
    uc = h1.Cells(1, Columns.Count).End(xlToLeft).Column
    h1.Range("A1", h1.Cells(u1, uc)).AutoFilter Field:=1, Operator:= _
        xlFilterValues, Criteria2:=Array(2, fec)
    u1 = h1.Range("A" & Rows.Count).End(xlUp).Row
    If u1 > 1 Then
        h1.Range("A2", h1.Cells(u1, uc)).Copy
        h2.Range("A8").PasteSpecial xlValues
    Else
        MsgBox "No existen datos"
    End If
    Range("B2").Select
    If h1.AutoFilterMode Then h1.AutoFilterMode = False
    Application.ScreenUpdating = False
    Application.CutCopyMode = False
End Sub

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas