lunes, abril 14, 2008

Encontrar una fecha a partir de la semana del año

Excel pone a nuestra disposición todo un arsenal de funciones para extraer información a partir de fechas. Por ejemplo, si tomamos la fecha de hoy, 14 de abril del 2008 podemos extraer el número de día (que es más bien obvio), el día de la semana (lunes, martes, etc), el mes y al año



Quien quiera más información sobre funciones y cálculos con fechas y horas, puede apretar el enlace Fechas y Hora en el área de etiquetas del blog (en la columna a la izquierda).

Un lector me consulta cómo obtener los días de una semana si sólo sabemos el año y el número de semana.

Supongamos que tenemos el año en la celda B1 de la hoja y el número de semana en la celda B2



Empezamos por calcular el primer día del año con la fórmula =FECHA(B1;1;1)



Cada semana tiene necesariamente 7 días, así que podemos calcular el número de días transcurridos hasta el fin de la semana que aparece en la celda B2, con la fórmula =B2*7



Como pueden apreciar, el resultado es incorrecto. Hemos agregado el control Calendario, para poder controlar el resultado de nuestra fórmula.

Lo que queremos obtener es el primer lunes de la semana, para lo cual tendremos que hacer algunas correcciones a nuestra fórmula.

La corrección la calculamos con esta fórmula

=(1>=DIASEM(FECHA(B1;1;1))*7)+1-DIASEM(FECHA(B1;1;1))

Sumamos este resultado al de nuestra fórmula original y obtenemos el último día de la semana buscada



Ahora tenemos que llevar el resultado al primer día, para lo cual todo lo que tenemos que hacer es restar 6 del resultado obtenido

Nuestra fórmula final será

=FECHA(B1;1;1)+(B2*7)+(1>=DIASEM(FECHA(B1;1;1))*7)+1-DIASEM(FECHA(B1;1;1))-6



Esta fórmula siempre nos dará el primer lunes de la semana. Por ejemplo, si buscamos la primer semana del 2008, el primer día es, obviamente, el 01/01/2008. Pero el primer lunes de esa semana es el 31/12/2007



Si queremos extraer las fechas por semanas a partir del primer día del año, es decir, por intervalos de 7 días, tenemos que usar esta fórmula

=FECHA(B1;1;1)+(B2*7)-7




El archivo con el ejemplo se puede descargar aquí

Technorati Tags:

9 comentarios:

  1. Hola Jorge, se podría con un sistema parecido controlar por ejemplo las vacaciones del personal de una empresa?
    un cordial saludo y enhorabuena!!

    ResponderBorrar
  2. Hola
    en principio, si. Pero tendrías que ser más explícito en relación al modelo que quieres hacer.

    ResponderBorrar
  3. Bueno, el control de vacaciones lo llevo en excel pero muy rudimentariamente. Viendo tu aportación intuyo se podría automatzar mucho su control trabajando sobre el calendario en las vacaciones devengadas y las que restan por disfrutar. Con algún tipo de report final. Voy a intentar trabajar en ello aunque cualquier aportacion será bien recibida

    ResponderBorrar
  4. Hola Jorge

    Por simplificar (y entender mejor) la fórmula:

    =(1>=DIASEM(FECHA(B1;1;1))*7)+1-DIASEM(FECHA(B1;1;1))

    La primera parte (1>=DIASEM(FECHA(B1;1;1))*7) siempre va a dar 0 porque la segunda parte de la comparación no puede ser nunca menor de 7, por lo que la fórmula se podría quedar en:

    =1-DIASEM(FECHA(B1;1;1))

    Y daría el factor de corrección. Indícame si estoy en lo cierto o si estoy metiendo la pata.

    Un saludo

    ResponderBorrar
  5. Tu corrección funciona. No me acuerdo por qué armé semejante esperpento de fórmula.

    ResponderBorrar
  6. una pregunta como aria si solo tengo año y mes y quiero calcular que nro de dia caera el domingo...sabado en un calendario q formula puedo utilizar, me pueden ayudar gracias de antemano

    ResponderBorrar
  7. En esta nota muestro una técnica pra hacer ese tipo de cálculos (donde dice "Calcular la fecha de un día determinado, dado el mes y el año").
    Y ahora una observación importante: es la última vez que respondo a una consulta con tanto desprecio por el idioma castellano. No hay ningún motivo para no poner un poco de atención a la ortografía ("aria" es una pieza musical!!!) o para usar abreviaciones como "q" en lugar de "que". Además el castellano hace uso de los acentos. Y evito mencionar los signos de puntuación.
    El mismo empeño que pongo en responder a las consultas, espero que mis lectores pongan en presentarlas.

    ResponderBorrar
  8. Para el año 2012 ó 2017 no valdría no? El día 1 de 2017 corresponde a domingo, sin embargo con esa fórmula te lo incluiría como 25/12/2017 y no como 26/12/2016 que es el lunes de esa semana,

    ¿lo puedes confirmar?

    Gracias!

    ResponderBorrar
  9. Prueba con estas formulas:

    para el primer dia (semana empieza en lunes)

    =FECHA(B1,1,1)+(B2*7)+1-DIASEM(FECHA(B1,1,1),1)-6

    para el ultimo dia

    =FECHA(B1,1,1)+(B2*7)+1-DIASEM(FECHA(B1,1,1),1)

    La diferencia es usar el valor 1 para el segundo parametro de DIASEM


    ResponderBorrar

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