martes, noviembre 04, 2008

Filtrado de fechas en Excel con Autofiltro o Filtro Avanzado

Supongamos que queremos filtrar una lista de fechas de manera de dejar visibles sólo las fechas que caen en miércoles. Podemos hacer esto con Autofiltro o con Filtro Avanzado, pero cuál sería el criterio?
Si usamos Autofiltro necesitamos crear una columna auxiliar que nos dé el día de la semana para cada una de las fechas del rango. Luego filtramos de acuerdo a esta columna auxiliar.



¿Cómo calculamos el día de la semana para cada fecha? Dos posibilidades, una sencilla y otra complicada:

1 - La complicada, con funciones. Con la función DIASEM, por ejemplo

=DIASEM(A2,2) da 3.

Para transformar el resultado 3 en "miércoles" usamos la función ELEGIR de esta manera

=ELEGIR(DIASEM(A2,2),"lunes","martes","miércoles","jueves","viernes","sábado","domingo")

O con la función INDICE:
=INDICE(semana,DIASEM(A2,2)),

donde "semana" es un nombre que contiene un rango con los días de la semana o directamente los días de la semana.

2 - La posibilidad sencilla. Creamos en la columna auxiliar una referencia a la celda con la fecha (en B2 ponemos =A2) y cambiando el formato de B con el formato personalizado "dddd".

Si queremos usar Filtro Avanzado, tenemos que usar una fórmula lógica, es decir, que dé como resultado VERDADERO o FALSO. Agregamos algunas filas en blanco para poner las filas de criterios y en la celda A2 ponemos esta fórmula

=DIASEM(A5,2)=3



Luego usamos el menú de Filtro avanzado






La ventaja de usar Filtro Avanzado es que nos permite copiar los resultados a otro rango de la hoja o usar más de dos criterios para filtrar la lista.

Ahora veamos otros casos que se presentan.

Para dejar visibles sólo fechas que sean el primer día del mes usamos la fórmula

=A2=FECHA(AÑO(A2),MES(A2),1)

Si la fecha en A2 coincide con el primer día del mes el resultado será VERDADERO. En caso contrario, FALSO. Luego filtramos la lista usando como criterio VERDADERO en la columna auxiliar.



Si queremos usar Filtro Avanzado, usamos la misma fórmula como criterio






Para filtrar las fechas que sean el último día del mes usamos la fórmula

=A2=FECHA(AÑO(A2),MES(A2)+1,0)

Para filtrar el primer día hábil del mes usamos la fórmula

=A2=FECHA(AÑO(A2),MES(A2),1)+ELEGIR(DIASEM(FECHA(AÑO(A2),MES(A2),1),2),0,0,0,0,0,2,21

La primer parte de esta fórmula calcula la fecha del primer día del mes. En la segunda parte de la fórmula DIASEM calcula el número de día de la semana de esta fecha. Este resultado es usado como parámetro en la función ELEGIR, que agrega 0 (cero) si el día de semana cae entre lunes y viernes, suma 2 si el día de semana del primer día del mes cae un sábado o 1 si es domingo.

Para filtrar el último día hábil del mes usamos la fórmula

=A2=FECHA(AÑO(A2),MES(A2)+1,0)-(MAX(0,DIASEM(FECHA(AÑO(A2),MES(A2)+1,0),2)-5))

Como en los casos anteriores, si queremos usar Autofiltro usamos la fórmula para construir una columna auxiliar. Si queremos usar Filtro Avanzado usamos la fórmula en la celda de criterio.





Technorati Tags:

6 comentarios:

  1. Excelente, Jorge.
    Muchas Gracias

    Ariel

    ResponderBorrar
  2. Hola jorge,
    tengo un problema al poner la formula de fecha cualquier mes que ponga me lo toma como 1, es excel que falla?

    si pongo =mes(12), al dar enter me devuelve el valor de 1.

    ResponderBorrar
  3. Nari
    el argumento de la función MES tiene que ser una fecha. En Excel las fechas son una serie de números enteros que comienzan en 1 = 01/01/1900, 2 = 02/01/1900 y asi sucesivamente.
    Cuando pones =MES(12) Excel ve la fecha 12/01/1900 y el mes de esta fecha es 1.
    Te sugiero leer esta nota sobre manejo de fechas en Excel.

    ResponderBorrar
  4. Jorge

    tengo esta fecha en la celda A8 27/03/2007 otras fechas de marzo y varias de otros meses.
    mi criterio para el filtro avanzado es este: a8=fecha(año(a8),mes(3),dia(a8))
    y me da un valor falso.
    lo que quiero es filtrar las fechas del mes de marzo.
    como le dije en el comentario anterior cualquier dígito que ponga en mes me lo tomo como uno.
    como lo puedo solucionar??
    Gracias...

    ResponderBorrar
  5. Mari
    por lo visto no me he explicado en mi respuesta a tu comentario anterior. Por favor, lee la nota del enlace en mi anterior respuesta.
    Nuevamente, el argumento de la función MES tiene que ser una fecha. Cuandopones un número como 3, Excel ve la fecha 3 de enero del 1900, cuyo mes es obviamente enero, es decir 1. Si pones el número 32 como argumento verás que el resultado de MES es 2.
    Espero haberme explicado est vez.

    ResponderBorrar
  6. Hola Jorge,

    Lo primoero enhorabuena por el blog. Es muy bueno y ayuda mucho!

    Ahora mi pregunta, tengo una tabla que inlcuye imagenes. ¿como puedo hacer un filtro sin que se me descoloquen las imagenes?

    Gracias.

    Ester

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.