Como filtrar por rango de fecha con una condición

Necesito ayuda para desarrollar una pequeña macro que pueda copiar valores de la hoja2 a la hoja1, en la hoja2 tengo datos como se muestra en la imagen y en la hoja 1 poder copiar los datos según el rango de fechas si en la hoja1 coloco en A1 (fecha inicial) y B1 (fecha final) se pueda copiar ese rango pero solo los que estén con estado ACTIVO.

1 Respuesta

Respuesta
1

Este es el resultado de la macro, en las celdas f1 y g1 están las fechas de inicio y fin, la macro leerá estas y los los datos de la tabla, los cuales filtrara primero por fechas y luego por estado "activo" y copiara los resultados filtrados a la hoja2

y esta es la macro

Sub filtar_fecha()
Sheets("hoja2").Cells.Clear
fecha_inicial = Sheets("hoja1").Range("f1")
fecha_final = Sheets("hoja1").Range("g1")
Status = "activo"
With Sheets("hoja1").Range("a1").CurrentRegion
    .AutoFilter
    .AutoFilter Field:=1, Criteria1:=">=" & CDbl(fecha_inicial), _
    Operator:=xlAnd, Criteria2:="<=" & CDbl(fecha_final)
    .AutoFilter 4, Status
    .Offset(1).Copy
    Sheets("hoja2").Range("b2").PasteSpecial
    .AutoFilter
End With
End Sub

¡Gracias! me funciona agradezco el apoyo

Buenas Noches James Bond, necesito un apoyo estoy cambiando el método del filtro que ya no sea con las celdas F1 y G1 sino que ahora uso un Formulario con textbox estoy colocando de esta manera pero no me realiza el filtrado me sale en blanco.

Private Sub CommandButton1_Click()
Sheets("hoja2").Cells.Clear
fecha_inicial = TextBox1.Text
fecha_final = TextBox2.Text
Status = "activo"
With Sheets("hoja1").Range("a1").CurrentRegion
.AutoFilter
.AutoFilter Field:=1, Criteria1:=">=" & CDate(fecha_inicial), Operator:=xlAnd, Criteria2:="<=" & CDate(fecha_final)
.AutoFilter 4, Status
.Offset(1).Copy
Sheets("hoja2").Range("b2").PasteSpecial
.AutoFilter
End With
End Sub

Tienes dos errores en lo que tratas de hacer uno los textbox deben ser convertidos a fecha mediante cdate y la otra el filtro solo funciona con formato americano para fechas por eso se emplea el CDBl por eso no funciona la macro, esta es la amcro con las correcciones que mencione.

Private Sub CommandButton1_Click()
Sheets("hoja2").Cells.Clear
fecha_inicial = CDate(TextBox1.Text)
fecha_final = CDate(TextBox2.Text)
Status = "activo"
With Sheets("hoja1").Range("a1").CurrentRegion
.AutoFilter
.AutoFilter Field:=1, Criteria1:=">=" & CDbl(fecha_inicial), Operator:=xlAnd, Criteria2:="<=" & CDbl(fecha_final)
.AutoFilter 4, Status
.Offset(1).Copy
Sheets("hoja2").Range("b2").PasteSpecial
.AutoFilter
End With
End Sub

¡Gracias! Si me di cuenta cuando fui leyendo igual use cdate y ya me funciono, una ultima consulta como puedo hacer que cuando copie a la otra hoja solo sea ciertas columnas me refiero que se copie solo la columna A, B y DE, además de eso he variado la tabla ya que me pide que se filtre según el encabezado así como la imagen ene, feb, mar, may, jun... para este caso tengo un form con 2 textbox en las cuales inserto las fechas a filtra y pega en la otra hoja pero solo deseo que sea la columna A, B y DE las que se copien pero solo del mes que se esta escogiendo ejemplo coloco fecha inicial 01/06/2019 y fecha fin 17/06/2019 solo debería de filtrar con las condiciones anteriores incluyendo el mes en este caso junio (jun) y se copia a la hoja2

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas