miércoles, junio 28, 2006

Calculando las semanas del año en Excel

Últimamente he recibido varias preguntas sobre temas relacionados con cálculos de fechas. Una de ellas era cómo calcular el número de semana de una determinada fecha.

A primera vista parece una pregunta sencilla. Si tenemos instalado el Análisis Toolpak, podemos utilizar la función NUM.DE.SEMANA(núm_de_serie;tipo), donde "num_de_serie" es el número de serie de la fecha y "tipo" es una variable que indica si la semana comienza el domingo (tipo = 1) o el lunes(tipo = 2).


Si NUM.DE.SEMANA da resultado #¿NOMBRE?, podemos usar su equivalente en inglés WEEKNUM.


Sencillo, no? Pues bien, no!. Sucede que hay que tener en cuenta varias cuestiones antes de lanzarnos a calcular el número de semana.

El resto de esta entrada está basado en los excelentes artículos de
Chip Pearson y Ron de Bruin sobre el tema.

La primer semana comienza el 1 de enero; pero, cuando comienza la segunda, al 8 de enero o el primer lunes después del 1 de enero? Que día marca el comienzo de la semana, el lunes o el domingo?

Veamos las distintas formas de calcular el número de semana. Un archivo con las distintas fórmulas se puede bajar aquí.

Número de semana absoluto.


De acuerdo este concepto, la primer semana empieza siempre el 1 de enero y concluye el 7 de enero, sin tener en cuenta el día de la semana. De esta manera tendremos 53 semanas al año. La semana 53 tendrá un día o dos, si se trata de un año bisiesto.
Para calcular el número de semana absoluto usamos la fórmula
=TRUNCAR(((A1-FECHA(AÑO(A1),1,0))+6)/7)
Si en la celda A1 tenemos la fecha de hoy (28/06/2006), esta fórmula da el resultado 26.

Número de semana de Excel.


Excel ofrece la función WEEKNUM (o NUM.DE.SEMANA). Para usar esta fórmula debemos instalar previamente el
Analysis Toolpak.
Esta función calcula el número de semana contando desde el domingo o el lunes. Por lo tanto, la primer semana puede tener entre 1 y 7 días.
La sintaxis de esta fórmula es
NUM.DE.SEMANA(núm_de_serie;tipo)
Núm_de_serie es una fecha dentro de la semana. Las fechas deben introducirse mediante la función FECHA o como resultados de otras fórmulas o funciones.
Tipo es un número que determina en qué día comienza la semana. El valor puede ser 1 (domingo) o 2 (lunes).
La función =WEEKNUM(A1,2), donde A1 contiene la fecha 28/06/2006 da el resulta 27. En cambio la función =WEEKNUM(A1,1) da 26.

Número de semana ISO (International Organization for Standardisation )


De acuerdo a la norma ISO, la semana empieza siempre un lunes y termina un domingo. La primer semana del año es la que contiene el primer jueves. Es decir, la primer semana tendrá siempre 4 días por lo menos.
La fórmula para calcular el número de semana de acuerdo al estándar ISO es

=ENTERO((A1-FECHA(AÑO(A1-DIASEM(A1-1)+4),1,3)+DIASEM(FECHA(AÑO(A1-DIASEM(A1-1)+4),1,3))+5)/7)

Si la celda A1 contiene la fecha 28/06/2006, el resultado será 26.

Finalmente, si queremos utilizar fórmulas en lugar de la función WEEKNUM,

Si la semana empieza en domingo:

=1+ENTERO((A1-(FECHA(AÑO(A1),1,2)-DIASEM(FECHA(AÑO(A1),1,1))))/7)

Si la semana empieza en lunes:

=1+ENTERO((A1-(FECHA(AÑO(A1),1,2)-DIASEM(FECHA(AÑO(A1),1,0))))/7)



Categorías: Funciones&Formulas

Technorati Tags:

21 comentarios:

  1. UN PEQUEÑO TRUCO A ESTE PROBLEMA DEL CALCULO DEL NUMERO DE LA SEMANA:

    ="SEMANA "&REDONDEAR.MAS((HOY()-38718)/7;0)

    ES BASTANTE EFICIENTE, NO TIENE EL PROBLEMA DE AJUSTAR A 53 O 54 SEMANAS.

    EL TRUCO ESTA EN QUE 38718 ES EL NUMERO DE DIAS DESDE 01/01/1900, POR LO CUAL SOLO UTILIZAS LOS DIAS DEL PRESENTE AÑO; OBVIAMENTE EL CARTEL DE "SEMANA" ES OPTATIVO

    ResponderBorrar
  2. Hola

    Gracias por la info, no consegía que me funcionase la fórmula:

    =1+ENTERO((A1-(FECHA(AÑO(A1),1,2)-DIASEM(FECHA(AÑO(A1),1,0))))/7)

    A parte de que las "comas" son "puntos y coma", delante de DIASEM tiene que ser un más.

    Gracias por el trabajo.

    ResponderBorrar
  3. Hola
    he revisado las fórmulas y funcionan bien tal como aparecen en el blog. Fíjate que si aplicas WEEKNUM (o NUM.DE.SEMANA) a la fecha de hoy, recibes como resultado 13, que es la semana corriente. Si cambiamos la fórmula, el resultado será 12. Mucho me temo que tu fórmula está equivocada.
    En cuanto a los separadores, éstos dependen de las definiciones del sistema.

    ResponderBorrar
  4. Buen dia:

    Gracias por escribir post tan interesantes para todos nosotros.

    Em mi empresa por desiciones de producion las semanas comienzan los dias Viernes ( como hago yo por medio de formulas sacarle el numero de semana a una fecha en particualar) .

    Agradecere mucho su ayuda.

    Saludos Cordiales
    Edgard ramos
    Edgar.drg@gmail.com

    ResponderBorrar
  5. El primer día de la primera semana del año sería el primer viernes de enero?

    ResponderBorrar
  6. y para saber el numero de semana del mes que formula puedo utilizar.

    Gracias !!!!

    javierhn1@gmail.com

    ResponderBorrar
  7. Marvin,
    no la chequé pero podés probar con

    =ENTERO((DIA(B2)-1)/7)+1

    donde en B2 está la fecha en cuestión

    ResponderBorrar
  8. La verdad, la info de este blog, me ayudó muchísimo en un reporte de Consumos y tendencias... Le agradezco infinitamente.

    ResponderBorrar
  9. Un apunte. Si se utiliza la fórmula para calcular la semana ISO de una fecha y queremos hacer agrupados por semana ISO y año no podremos utilizar la función año de Excel, sino que tenemos que calcular el "año ISO" de esa semana. Un ejemplo, según la fórmula el 1-1-2010, viernes, corresponde a la semana 53. En este caso el año no sería 2010 para juntar a la semana, sino el 2009.
    AñoISO = AÑO(A2 -DIASEM(A2 - 1) + 4)

    ResponderBorrar
  10. Y si quiero que la semana empiece en miércoles?

    ResponderBorrar
  11. De acuerdo al estandar ISO 8601, el lunes es el primer día de la semana. En algunos países y culturas el domingo. Ese es el motivo que las funciones ofrecen la posibilidad establecer el primer día de la semana entre domingo o lunes.

    ResponderBorrar
  12. Estimados, quiero generar un filtro para tabla dinamica, que se clasifique asi: 1 semana de enero, 2 semana de enero, 3 tercera semana de enero.., para ello tengo todos los días como base para darle ese formato, algún gurú sabra si es posible hacer ese formato?? gracias

    ResponderBorrar
  13. La funcionalidad Agrupar de las tablas dinámicas permite hacerlo por años, meses, trimestres, días pero no por semana. En esta nota muestro una forma aproximada de hacerlo. Otra técnica sería agregando un campo auxiliar a la base de datos. Tal vez publique una nota sobre el tema próximamente.

    ResponderBorrar
  14. Como puedo hacer para que a partir de una fecha excel devuelva la semana en la cual esta esa fecha, pero no en formato de numero... x ejemplo... 22/11/2015 = semana que termina en 28/11/2015...

    ResponderBorrar
  15. Como puedo hacer para que a partir de una fecha excel devuelva la semana en la cual esta esa fecha, pero no en formato de numero... x ejemplo... 22/11/2015 = semana que termina en 28/11/2015...

    ResponderBorrar
  16. Suponiendo que la semana termina el sábado, como se desprende de tu ejemplo, tendrías que usar esta fórmula:

    ="semana que termina en "&TEXTO(A1+(7-DIASEM(A1,1)),"dd/mm/yyyy")

    De acuerdo a las definiciones regionales del Windows, puede la expresión "dd/mm/yyyy" puede deber escribirse "dd/mm/aaaa"

    ResponderBorrar
  17. Como puedo hacer si por ejemplo tengo una tabla con estos datos
    Semana||Inicio_Semana || Fin_semana
    45 || 04/11/2016 || 10/11/2016
    46 || 11/11/2016 || 17/11/2016

    Bien ahora con esos datos yo escribo en otra hoja el 13/11/2016 por ejemplo y al lado debe salirme el numero de semana (Ojo las fechas de inicio y fin de semana son manuales no los inicio y fin habituales de un calendario)

    ResponderBorrar
  18. Excel tiene la función NUM.DE.SEMANA justamente para esos cálculos.

    ResponderBorrar
  19. Necesito ayuda: en una celda de Excel quiero que cuando escriba la fecha de nacimiento parezca de la siguiente manera ejemplo :22-X-2016.

    ResponderBorrar
  20. Usando Formato de celda-Numerico-Personalizado y definiendo el formato.

    ResponderBorrar

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