Filtro avanzado con macro para 28 hojas

Dante amor nuevamente solicitando su ayuda, deseo hacer un filtro avanzado con una macro para 28 hojas y que me las filtre a otra hoja llamada reporte de captura, los encabezados de las 28 hojas están en las mismas celdas a5:h5 el filtro se haría en base a la fecha de captura que en las 28 hojas se encuentran en la celda a5 y se pegarían en la hoja reporte de captura a partir de la celda a8, en la celda c3 de la hoja reporte de captura ingreso la fecha que me piden para generar el reporte y que se genere el reporte con un botón espero haber sido claro saludos cordiales tonybug

1 respuesta

Respuesta
2

H o l a:

Te anexo la macro para filtrar las hojas.

Consideraciones que debes tomar en cuenta:

1. En la celda C3 poner una fecha

2. En la celda C2 poner el Título, por ejemplo, si en los encabezados de las 28 hojas en la celda A5 dice: "Fecha", entonces en la celda C2 deberás poner la palabra "Fecha".

3. Si no puedes poner la palabra "Fecha" en la celda C2, dime hasta dónde llegan tus datos de impresión para ocupar dos celdas y que no se impriman.

4. ¿Desde cuál celda y hasta cuál columna quieres que la información se imprima?

5. Esta línea de la macro esta deshabilitada, cuando se ajuste la macro con los puntos anteriores, la puedes habilitar para que el reporte se imprima

'h1. PrintOut


Sub ReporteDeCaptura()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("reporte de captura")
    h1.UsedRange.Offset(7, 0).ClearContents
    If h1.[C3] = "" Or Not IsDate(h1.[C3]) Then
        MsgBox "Escribe una fecha válida en la celda C3", vbCritical, "ERROR"
        h1.[C3].Select
        Exit Sub
    End If
    '
    For Each h2 In Sheets
        If h2.Name <> h1.Name Then
            If h2.FilterMode Then h2.ShowAllData
            If h2.AutoFilterMode Then h2.AutoFilterMode = False
            u2 = h2.Range("A" & Rows.Count).End(xlUp).Row
            h2.Range("A5:H" & u2).AdvancedFilter Action:=xlFilterInPlace, _
                CriteriaRange:=h1.Range("C2:C3"), Unique:=False
            u2 = h2.Range("A" & Rows.Count).End(xlUp).Row
            If u2 > 5 Then
                h2.Range("A6:H" & u2).Copy
                u1 = h1.Range("A" & Rows.Count).End(xlUp).Row + 1
                If u1 < 8 Then u1 = 8
                h1.Range("A" & u1).PasteSpecial xlValues
            End If
        End If
    Next
    h1.[C3].Select
    u1 = h1.Range("A" & Rows.Count).End(xlUp).Row
    h1.PageSetup.PrintArea = "A1:H" & u1
    'h1.PrintOut
    Application.ScreenUpdating = True
    MsgBox "Reporte terminado", vbInformation, ""
End Sub

buenas noches sr. dante gracias de antemano por la respuesta rapida volviendo al tema los reportes no se van a imprimir ya que me los piden electronicamente ya inserte la macro en un modulo pero me marca error en estas lineas del codigo y se pone en amarillo

h2.Range("A5:H" & u2).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=h1.Range("C2:C3"), Unique:=False

sera porque aun no ingreso informacion a las hojas? podria agregar en los criterios las celdas d2:d3 para que me busque fechas mayores a, y menores a, gracias sr. dante y saludos

Dime exactamente qué mensaje de error te aparece.

Pon información en las hojas y prueba nuevamente.

Cuando termines de probar esta macro, le agregamos lo que necesites.

¡Gracias! sr. dante voy a cargar el libro con la información lo probare y le comentare más delante por lo pronto cierro la pregunta para no entretener este espacio que otros necesitan de su ayuda en los próximos días le hago una nueva consulta sobre este tema ya que por el momento no me traje la información de mi pc del trabajo para llenar el formato

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas