3 de enero de 2008

Calcular el último día de un mes

Ocasionalmente nos vemos en la necesidad de calcular la fecha del último día de determinado mes, de determinado año, o su pariente cercano, el número de días que tiene un mes.

En una previa nota vimos como calcular la fecha de término de un periodo particular, para un número entero de meses. La fórmula utilizada era:

=FECHA(AÑO(A2), MES(A2)+B2, DIA(A2)-1)

Donde A2 es la fecha inicial y B2 la duración del periodo en meses.

Si nuestro periodo está expresado en días, entonces usamos esta variante:

=FECHA(AÑO(A2), MES(A2), DIA(A2)+B2)

Esta fórmula funciona aún si DIA(A2)+B2 es mayor al número de días del mes MES(A2), ya que Excel "ajusta" el mes (y si es necesario, también el año) de la fecha resultante automáticamente. En efecto, si ingresamos la siguiente "fecha" en Excel:

33/01/2008

Excel nos mostrará:

02/02/2008

Ajustando el mes (y el día) adecuadamente para mostrar una fecha válida.

Supongamos ahora que en A2 tenemos una fecha de febrero de 2008, por ejemplo:

14/02/2008

Y queremos saber cuántos días tiene el mismo mes. Para calcularlo, primeramente calculamos la fecha del primer día del mes siguiente, como sigue:

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

Lo cual devuelve 01/03/2008. Llegados a este punto, les revelaré algo que me llevó 10 años de meditación profunda descubrir: El último día de un mes es siempre el día anterior al primer día del mes siguiente. Conociendo esto, y sabiendo que en Excel, un día es igual a una unidad, obtenemos la fórmula para calcular el último día de un mes, en este caso febrero 2008:

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

Nuevamente, como un día es igual a una unidad, podemos restar 1 directamente al argumento día:

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

Simplificando:

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

Lo cual se convierte en:

=FECHA(2008, 3, 0)

Como el cero de marzo no es una fecha válida, Excel la ajustará adecuadamente y nos mostrará el día anterior al 1 de marzo:

29/02/2008

Para finalizar, si solo nos interesa saber el número de días de un mes (no una fecha) lo extraemos de la fórmula anterior con la función DIA:

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

13 comentarios:

  1. Cordial saludo y bendiciones en el Señor JESUCRISTO, muchas bendiciones. Bueno tengo una inquietud:
    Cuando aplico
    = Fecha(año(##);mes(##)+1;0)
    En una hoja si funciona del libro, pero encambio en otra arroja #Num, quizás se deba a algún complemento.
    Quizás me puedas ayudar.

    ResponderEliminar
  2. EXCELENTE....

    MUCHAS GRACIAS!!!

    Estuve buscando un comando así mucho tiempo

    De nuevo, MUCHAS GRACIAS!!!!

    ResponderEliminar
  3. Eres un máquina, muchas gracias por las fórmulas y sobre todo, muchas gracias por el planteamiento de la fórmula a través de tu meditación. Me ha servido mucho para entenderla y exponerla. Saludos y gracias

    ResponderEliminar
  4. excelente,
    muchisimas gracias
    buscaba saber numero de dias de un mes especifico
    muy bien explicado
    francisco quiroga

    ResponderEliminar
  5. quiro que en una columna me muestre los dias habiles de un mes con una formula los dias programados son 6 o sea de lunes a sabado

    ResponderEliminar
  6. A mi me parece que esa formula da error cuando el mes es diciembre, propongo:
    =DIA(FECHA(AÑO(FECHA(AÑO(Q6);MES(Q6);15)+30);MES(FECHA(AÑO(Q6);MES(Q6);15)+30);1)-1)

    Lo que hace es tomar el dia 15 del mes en cuestión y sumarle 30 días para que caiga en el próximo mes, y de esa fecha se toma el año, el mes, y se le fija el día 1. Luego se calcula el día anterior.
    slds

    ResponderEliminar
  7. JAJAJAJAJA CREEME QUE YO SI TENIA UNA DECADA BUSCANDO UNA RESPUESTA A ESTO JAJAJAJA, GRACIAS POR ABRIR MI LOGICA. SALUDOS MOISES CABALLERO

    ResponderEliminar
  8. Excelente comentario
    Salduos

    ResponderEliminar
  9. Ohhhhhhhhhhhhhh Maestro, jaja, todo resumido tan simple.

    ResponderEliminar
  10. =FIN.MES(celda donde esta la fecha;0)........ y ya está.
    Un saludo

    ResponderEliminar

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Excel, Excel 2003, Excel 2007 y el logo XL son marcas registradas de Microsoft Corporation.