Filtros y fechas: ¿imposible?

12/08/2005 - 21:03 por RHT | Informe spam
Saludos.
Desde hace varios días estoy tratando de finalizar una pequeña aplicación,
pero no lo he conseguido.
Necesito desesperadamente de su auxilio y consejo.

Se los trataré de explicar rápido.
Concentro registros desde muchos libros en uno solo. Los ordeno por fecha de
movimiento. Después muestro un Form con dos DTPickers, para que el usuario
indique el rango de fechas del reporte que desea. Entonces paso los valores
de los DTPickers al autofiltro del libro con los concentrados por VBA.
Error: Cero registros.

Al principio sufrí con la inversión de las fechas en los campos mes y dia,
por ejemplo, 01/08/05 se me volvía 08/01/05.
Use dateformat, dateserial, convertí las fechas a String y nada.
Entonces, cambié todas las fechas de los archivos origen a texto (y desde
luego las rutinas que los generan), para solo tener que pelear con texto.
Error: No se pueden filtrar rangos de fecha que estan en formato de
texto!

Por último: Cambié los formatos de los DTPickers a custom: 01/Ago/05.
Problema: sólo funciona si pongo la condición a O en vez de a Y.
Que quiero decir? Que si paso las fechas delimitadoras del rango deseado y
luego digo:

Selection.AutoFilter Field:, Criteria1:=">=" & Trim(Fecha_inicial_texto),
Operator:=xlAnd _
, Criteria2:="<=" & Trim(Fecha_final_texto)

(Porque tuve que pasar las fechas a texto, si no no me funcionaba)

En el autofiltro aparecen como: 01/07/05 [lo cual es correcto] y 04/Ago/05
[lo cual también es correcto pero tiene otro formato, por lo que hace
NADA!!]

En cambio si pongo:

Selection.AutoFilter Field:, Criteria1:=">=" & Trim(Fecha_inicial_texto),
Operator:=xlOr _
, Criteria2:="<=" & Trim(Fecha_final_texto)

En el autofiltro aparecen como: 01/Jul/05 [lo cual es perfectamente
correcto] y 04/Ago/05 [lo cual también es correcto pero como le dije O,
muestra un montón de registros que no necesito]

En pocas palabras, se cambia el formato de uno de los parámetros del
autofiltro si uso la condición Y, pasándolos por VBA.

Agradezco de antemano cualquier orientación.

Preguntas similare

Leer las respuestas

#1 RHT
12/08/2005 - 21:55 | Informe spam
Muchas gracias Carlos por tu pronta respuesta

Creo que no funciona.
Pongo las fechas incial y final como 04/Jul/05 y 02/ago/05
y en el filtro me aparece

07/04/05 [mal] y 02/Ago/05 [bien]

Que podrá ser?

"Carlos Durán Urenda" escribió en el mensaje
news:
Prueba con ...

Selection.AutoFilter Field:, Criteria1:=">=" &
Format(Fecha_inicial_texto, "MM/dd/yy"), Operator:=xlAnd _
, Criteria2:="<=" & Format(Fecha_final_texto,"MM/dd/yy")



y me dices

Saludos
Carlos Durán




"RHT" escribió en el mensaje
news:
Saludos.
Desde hace varios días estoy tratando de finalizar una pequeña
aplicación, pero no lo he conseguido.
Necesito desesperadamente de su auxilio y consejo.

Se los trataré de explicar rápido.
Concentro registros desde muchos libros en uno solo. Los ordeno por fecha
de movimiento. Después muestro un Form con dos DTPickers, para que el
usuario indique el rango de fechas del reporte que desea. Entonces paso
los valores de los DTPickers al autofiltro del libro con los concentrados
por VBA. Error: Cero registros.

Al principio sufrí con la inversión de las fechas en los campos mes y
dia, por ejemplo, 01/08/05 se me volvía 08/01/05.
Use dateformat, dateserial, convertí las fechas a String y nada.
Entonces, cambié todas las fechas de los archivos origen a texto (y desde
luego las rutinas que los generan), para solo tener que pelear con texto.
Error: No se pueden filtrar rangos de fecha que estan en formato de
texto!

Por último: Cambié los formatos de los DTPickers a custom: 01/Ago/05.
Problema: sólo funciona si pongo la condición a O en vez de a Y.
Que quiero decir? Que si paso las fechas delimitadoras del rango deseado
y luego digo:

Selection.AutoFilter Field:, Criteria1:=">=" &
Trim(Fecha_inicial_texto), Operator:=xlAnd _
, Criteria2:="<=" & Trim(Fecha_final_texto)

(Porque tuve que pasar las fechas a texto, si no no me funcionaba)

En el autofiltro aparecen como: 01/07/05 [lo cual es correcto] y
04/Ago/05 [lo cual también es correcto pero tiene otro formato, por lo
que hace NADA!!]

En cambio si pongo:

Selection.AutoFilter Field:, Criteria1:=">=" &
Trim(Fecha_inicial_texto), Operator:=xlOr _
, Criteria2:="<=" & Trim(Fecha_final_texto)

En el autofiltro aparecen como: 01/Jul/05 [lo cual es perfectamente
correcto] y 04/Ago/05 [lo cual también es correcto pero como le dije O,
muestra un montón de registros que no necesito]

En pocas palabras, se cambia el formato de uno de los parámetros del
autofiltro si uso la condición Y, pasándolos por VBA.

Agradezco de antemano cualquier orientación.







Respuesta Responder a este mensaje
#2 Carlos Durán Urenda
12/08/2005 - 22:15 | Informe spam
Prueba con ...

Selection.AutoFilter Field:, Criteria1:=">=" &
Format(Fecha_inicial_texto, "MM/dd/yy"), Operator:=xlAnd _
, Criteria2:="<=" & Format(Fecha_final_texto,"MM/dd/yy")



y me dices

Saludos
Carlos Durán




"RHT" escribió en el mensaje
news:
Saludos.
Desde hace varios días estoy tratando de finalizar una pequeña aplicación,
pero no lo he conseguido.
Necesito desesperadamente de su auxilio y consejo.

Se los trataré de explicar rápido.
Concentro registros desde muchos libros en uno solo. Los ordeno por fecha
de movimiento. Después muestro un Form con dos DTPickers, para que el
usuario indique el rango de fechas del reporte que desea. Entonces paso
los valores de los DTPickers al autofiltro del libro con los concentrados
por VBA. Error: Cero registros.

Al principio sufrí con la inversión de las fechas en los campos mes y dia,
por ejemplo, 01/08/05 se me volvía 08/01/05.
Use dateformat, dateserial, convertí las fechas a String y nada.
Entonces, cambié todas las fechas de los archivos origen a texto (y desde
luego las rutinas que los generan), para solo tener que pelear con texto.
Error: No se pueden filtrar rangos de fecha que estan en formato de
texto!

Por último: Cambié los formatos de los DTPickers a custom: 01/Ago/05.
Problema: sólo funciona si pongo la condición a O en vez de a Y.
Que quiero decir? Que si paso las fechas delimitadoras del rango deseado y
luego digo:

Selection.AutoFilter Field:, Criteria1:=">=" &
Trim(Fecha_inicial_texto), Operator:=xlAnd _
, Criteria2:="<=" & Trim(Fecha_final_texto)

(Porque tuve que pasar las fechas a texto, si no no me funcionaba)

En el autofiltro aparecen como: 01/07/05 [lo cual es correcto] y 04/Ago/05
[lo cual también es correcto pero tiene otro formato, por lo que hace
NADA!!]

En cambio si pongo:

Selection.AutoFilter Field:, Criteria1:=">=" &
Trim(Fecha_inicial_texto), Operator:=xlOr _
, Criteria2:="<=" & Trim(Fecha_final_texto)

En el autofiltro aparecen como: 01/Jul/05 [lo cual es perfectamente
correcto] y 04/Ago/05 [lo cual también es correcto pero como le dije O,
muestra un montón de registros que no necesito]

En pocas palabras, se cambia el formato de uno de los parámetros del
autofiltro si uso la condición Y, pasándolos por VBA.

Agradezco de antemano cualquier orientación.



Respuesta Responder a este mensaje
#3 Carlos Durán Urenda
13/08/2005 - 01:20 | Informe spam
la verdad no se, yo lo probe tal como te lo pase y se me funciono, al
parecer debe pasar la fecha al formato ingles, la ventana del autofiltro lo
muestra de acuerdo a la configuracion regional del equipo, pero en realidad
la operacion la debe hacer con fechas en formato ingles

posiblemente sea que ya le dediscaste mucho tiempo y el detalle es una
pequeñés que puedas ver cuando te despejes

Bye

"RHT" escribió en el mensaje
news:
Muchas gracias Carlos por tu pronta respuesta

Creo que no funciona.
Pongo las fechas incial y final como 04/Jul/05 y 02/ago/05
y en el filtro me aparece

07/04/05 [mal] y 02/Ago/05 [bien]

Que podrá ser?

"Carlos Durán Urenda" escribió en el mensaje
news:
Prueba con ...

Selection.AutoFilter Field:, Criteria1:=">=" &
Format(Fecha_inicial_texto, "MM/dd/yy"), Operator:=xlAnd _
, Criteria2:="<=" & Format(Fecha_final_texto,"MM/dd/yy")



y me dices

Saludos
Carlos Durán




"RHT" escribió en el mensaje
news:
Saludos.
Desde hace varios días estoy tratando de finalizar una pequeña
aplicación, pero no lo he conseguido.
Necesito desesperadamente de su auxilio y consejo.

Se los trataré de explicar rápido.
Concentro registros desde muchos libros en uno solo. Los ordeno por
fecha de movimiento. Después muestro un Form con dos DTPickers, para que
el usuario indique el rango de fechas del reporte que desea. Entonces
paso los valores de los DTPickers al autofiltro del libro con los
concentrados por VBA. Error: Cero registros.

Al principio sufrí con la inversión de las fechas en los campos mes y
dia, por ejemplo, 01/08/05 se me volvía 08/01/05.
Use dateformat, dateserial, convertí las fechas a String y nada.
Entonces, cambié todas las fechas de los archivos origen a texto (y
desde luego las rutinas que los generan), para solo tener que pelear con
texto. Error: No se pueden filtrar rangos de fecha que estan en formato
de texto!

Por último: Cambié los formatos de los DTPickers a custom: 01/Ago/05.
Problema: sólo funciona si pongo la condición a O en vez de a Y.
Que quiero decir? Que si paso las fechas delimitadoras del rango deseado
y luego digo:

Selection.AutoFilter Field:, Criteria1:=">=" &
Trim(Fecha_inicial_texto), Operator:=xlAnd _
, Criteria2:="<=" & Trim(Fecha_final_texto)

(Porque tuve que pasar las fechas a texto, si no no me funcionaba)

En el autofiltro aparecen como: 01/07/05 [lo cual es correcto] y
04/Ago/05 [lo cual también es correcto pero tiene otro formato, por lo
que hace NADA!!]

En cambio si pongo:

Selection.AutoFilter Field:, Criteria1:=">=" &
Trim(Fecha_inicial_texto), Operator:=xlOr _
, Criteria2:="<=" & Trim(Fecha_final_texto)

En el autofiltro aparecen como: 01/Jul/05 [lo cual es perfectamente
correcto] y 04/Ago/05 [lo cual también es correcto pero como le dije O,
muestra un montón de registros que no necesito]

En pocas palabras, se cambia el formato de uno de los parámetros del
autofiltro si uso la condición Y, pasándolos por VBA.

Agradezco de antemano cualquier orientación.











Respuesta Responder a este mensaje
#4 Héctor Miguel
13/08/2005 - 05:42 | Informe spam
hola, RHT !

... registros... ordeno por fecha... muestro un Form con dos DTPickers, para... el rango de fechas del reporte
... paso los valores de los DTPickers al autofiltro... por VBA. Error: Cero registros
... sufri con la inversion de las fechas en los campos mes y dia, por ejemplo, 01/08/05 se me volvia 08/01/05.
... dateformat, dateserial, converti las fechas a String y nada.
... cambie... las fechas de los archivos... a texto (y... las rutinas que los generan), para solo tener que pelear con texto. Error: No se pueden filtrar rangos de fecha que
estan en formato de texto!
... Cambie los formatos de los DTPickers a custom: 01/Ago/05. Problema: solo funciona si pongo la condicion a O en vez de a Y.
... si paso las fechas delimitadoras del rango deseado y luego digo:
Selection.AutoFilter Field:, Criteria1:=">=" & Trim(Fecha_inicial_texto), Operator:=xlAnd _
, Criteria2:="<=" & Trim(Fecha_final_texto)
En el autofiltro aparecen como: 01/07/05 [lo cual es correcto]
y 04/Ago/05 [lo cual tambien es correcto pero tiene otro formato, por lo que hace NADA!!] [...]



1) [seguramente] tu configuracion regional utiliza un formato/secuencia de fecha [p.e.] d/m/aa
2) puesto que vba ES 'US-Centric'... los formatos de fecha 'los /toma/lee' con el orden m/d/aa
3) considerando que los DTPicker 'asumen/presentan' el orden de fecha establecido en la configuracion regional del equipo...
y... [que 'a final de cuentas'] las fechas SON numeros 'enteros' [en tanto no sean de relevancia las 'fracciones' u horas]...
[posible 'solucion'] -> 'convierte' a un tipo de datos Long -> directamente los DTPicker -> en el codigo de los autofiltros ;)
-> el siguiente ejemplo me ha funcionado perfectamente... incluso alternando el orden de fecha en la configuracion regional...
[... otras lineas de tu codigo ...]
If Range("a1").AutoFilter Then Range("a1").AutoFilter
Range("a1").AutoFilter _
Field:, Criteria1:=">=" & CLng(DTPicker1), _
Operator:=xlAnd, _
Criteria2:="<=" & CLng(DTPicker2)
[... otras lineas de tu codigo ...]

si cualquier duda... comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#5 LC
13/08/2005 - 14:03 | Informe spam
Te tengo una solucion bien sencilla

Segun entiendo tu problema es que se intercambian el mes y el dia...

Puedes tomar la fecha y con las funciones DIA() MES() y AÑO () puedes
abrirla en tres celdas en el orden que tu decidas. por ejemplo

A1= "14/07/04" B1=DIA(A1) C1=MES(A1) C3=AÑO(A1)

Ahora tienes 3 celdas que representan la misma fecha.

Bueno tratre de entender lo que comentas en el codigo pero aun estoy muy
newbie con eso, de todas formas en mi experiencia con una aplicacion que
tambien estoy haciendo se me facilito mucho cuando ya no trabaje con fechas,
si no con la ternas que se producen al separarlas asi.

Por lo menos de esa forma tendras la seguridad de que no se invertiran los
numeros.

Puede dar risa este consejo, pero bueno la intencion solo es ayudar

Chaito



"RHT" escribió:

Saludos.
Desde hace varios días estoy tratando de finalizar una pequeña aplicación,
pero no lo he conseguido.
Necesito desesperadamente de su auxilio y consejo.

Se los trataré de explicar rápido.
Concentro registros desde muchos libros en uno solo. Los ordeno por fecha de
movimiento. Después muestro un Form con dos DTPickers, para que el usuario
indique el rango de fechas del reporte que desea. Entonces paso los valores
de los DTPickers al autofiltro del libro con los concentrados por VBA.
Error: Cero registros.

Al principio sufrí con la inversión de las fechas en los campos mes y dia,
por ejemplo, 01/08/05 se me volvía 08/01/05.
Use dateformat, dateserial, convertí las fechas a String y nada.
Entonces, cambié todas las fechas de los archivos origen a texto (y desde
luego las rutinas que los generan), para solo tener que pelear con texto.
Error: No se pueden filtrar rangos de fecha que estan en formato de
texto!

Por último: Cambié los formatos de los DTPickers a custom: 01/Ago/05.
Problema: sólo funciona si pongo la condición a O en vez de a Y.
Que quiero decir? Que si paso las fechas delimitadoras del rango deseado y
luego digo:

Selection.AutoFilter Field:, Criteria1:=">=" & Trim(Fecha_inicial_texto),
Operator:=xlAnd _
, Criteria2:="<=" & Trim(Fecha_final_texto)

(Porque tuve que pasar las fechas a texto, si no no me funcionaba)

En el autofiltro aparecen como: 01/07/05 [lo cual es correcto] y 04/Ago/05
[lo cual también es correcto pero tiene otro formato, por lo que hace
NADA!!]

En cambio si pongo:

Selection.AutoFilter Field:, Criteria1:=">=" & Trim(Fecha_inicial_texto),
Operator:=xlOr _
, Criteria2:="<=" & Trim(Fecha_final_texto)

En el autofiltro aparecen como: 01/Jul/05 [lo cual es perfectamente
correcto] y 04/Ago/05 [lo cual también es correcto pero como le dije O,
muestra un montón de registros que no necesito]

En pocas palabras, se cambia el formato de uno de los parámetros del
autofiltro si uso la condición Y, pasándolos por VBA.

Agradezco de antemano cualquier orientación.




Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida