Filtro con condición

Muchas gracias por la ayuda que me puedan brindar.
Esta duda la tengo hace rato, pero hasta ahora tengo la necesidad de resolverla. En un Form tengo dos Textbox, el textbox1 es desde y el textbox2 hasta. La idea es que se introduzcan dos fechas en los dos Textbox para que me filtren una base de datos, y me traigan los datos de una fecha inicial que me la da el textbox1 y una fecha final del textbox2. Lo he intentado pero me arroja solo las fechas del Textbox1 y Textbox2 pero las que están intermedias no me las muestra. No sé si intentar con la funciones propias de Excel utilizando Application. WorksheetFunction. La base de datos tiene estos campos
Nombre
EDAD
Fecha inscripción
No se si ayuda el código que tengo.
With Worksheets("FILTRO"). Range("A2,A4")
Dim FechaIni As Date
Dim FechaFin As Date
FechaIni = Range("A2"). Value
FechaFin = Range("A4"). Value
Sheets("BASE DE DATOS"). Range("A1:C10000"). AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=">FechaIni", CriteriaRange:="<FechaFin", CopyToRange:=Range("B1:D1"), _
Unique:=True
End With
Range("A2:D109"). Select
Selection.Font.ColorIndex = 0
Range("A2,A4"). Selec
El filtro es por fecha de inscripción
De antemano muchas gracias por cualquier ayuda.
Respuesta
1
Mmm, veamos, he utilizado otro filtro
Sheets("BASE DE DATOS").Range("A1:C10000").AutoFilter Field:=1, Criteria1:= _
">=" & Trim(FechaIni), Operator:=xlAnd, Criteria2:="<=" & Trim((Mid(FechaFin, 4, 2) & "-" & Mid(FechaFin, 1, 2) & "-" & Mid(FechaFin, 7, 4)))
Sheets("BASE DE DATOS").Select
[A2].Select
Sheets("BASE DE DATOS").Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("FILTRO").Select
Range("B1:D1").Select
ActiveSheet. Paste
Filtra base de datos según las fechas indicadas, luego toma el rango filtrado de base de datos y lo devuelve en hoja filtro desde B1:D1
¿Creo qué eso es no?.
Si te sirve CIERRA la pregunta, si tienes otras preguntas habré "otra pregunta"
Calvuch te cuento que utilice el siguiente código y cuando lo ejecute el filtro no me mostró nada. Esta es la pequeña base de datos
FECHA EDAD NOMBRE 13/05/2011 19 CARLOS 14/05/2011 20 HEBERTH 15/05/2011 45 JUAN 16/05/2011 23 GABRIEL 17/05/2011 14 SANDRA 18/05/2011 15 PEDRO
Sub FILTRO()
With Worksheets("FILTRO").Range("A2,A4")
Dim FechaIni As Date
Dim FechaFin As Date
FechaIni = Range("A2").Value
FechaFin = Range("A4").Value
Sheets("BASE DE DATOS").Range("A1:C10000").AutoFilter Field:=1, Criteria1:= _
">=" & Trim(FechaIni), Operator:=xlAnd, Criteria2:="<=" & Trim((Mid(FechaFin, 4, 2) & "-" & Mid(FechaFin, 1, 2) & "-" & Mid(FechaFin, 7, 4)))
Sheets("BASE DE DATOS").Select
[A2].Select
Sheets("BASE DE DATOS").Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("FILTRO").Select
Range("B1:D1").Select
ActiveSheet.Paste
End With
End Sub
Mmmm ya veo que el formato que utilizas es dd/mm/yyyy
Pudiera ser un problema, pues note que excel lo da vuelta y pone las fechas en formato gringo mm/dd/yyyy
pryeba así.
Yo lo pruebo acá y funciona ( excel 2007)
Sheets("BASE DE DATOS").Range("A1:C10000").AutoFilter Field:=1, Criteria1:= _
">=" & Trim((Mid(FechaIni, 4, 2) & "-" & Mid(FechaIni, 1, 2) & "-" & Mid(FechaIni, 7, 4))), Operator:=xlAnd, Criteria2:="<=" & Trim((Mid(FechaFin, 4, 2) & "-" & Mid(FechaFin, 1, 2) & "-" & Mid(FechaFin, 7, 4)))
Sheets("BASE DE DATOS").Select
[A2].Select
Sheets("BASE DE DATOS").Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("FILTRO").Select
Range("B1:D1").Select
ActiveSheet. Paste
Ya funciona lo único es que me pega las fechas filtradas en la columna B, C, DE (Todo repetido), es decir no me trae el dato de las edades y el nombre de los datos filtrados.
Disculpa tanta molestia.
Ok.
Prueba
Sheets("BASE DE DATOS").Range("A1:C10000").AutoFilter Field:=1, Criteria1:= _
">=" & Trim((Mid(FechaIni, 4, 2) & "-" & Mid(FechaIni, 1, 2) & "-" & Mid(FechaIni, 7, 4))), Operator:=xlAnd, Criteria2:="<=" & Trim((Mid(FechaFin, 4, 2) & "-" & Mid(FechaFin, 1, 2) & "-" & Mid(FechaFin, 7, 4)))
Sheets("BASE DE DATOS").Select
[A2].Select
Sheets("BASE DE DATOS").Range(Selection, Selection.End(xlDown)).Select
Sheets("BASE DE DATOS").Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets("FILTRO").Select
Range("B1:D1").Select
ActiveSheet.Paste
End With

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas