Cuando estamos creando reportes mensuales a partir de nuestra información, usualmente nos encontramos con que debemos calcular el límite de cada mes para restringir la información a solamente el rango de fechas entre el primer día y el último día del mes en cuestión. Nuestro primer instinto podría ser intentar calcular estos límites manualmente, contando días y estableciendo condiciones por si el mes tiene 30 o 31 días, pero en realidad no tenemos que complicarnos tanto, porque tenemos fórmulas a nuestro alcance que pueden hacer todo esto fácilmente, y eso es lo que veremos hoy.
Fecha actual como referencia
Para ejemplificar los posibles casos para el cálculo de fechas relativas al número de meses, vamos a crear una pequeña tabla, que iremos rellenando poco a poco dependiendo del caso. En medio de la tabla tendremos el valor del día de la fecha actual, y eso lo obtenemos fácilmente con la fórmula TODAY
. En realidad aquí puedes insertar cualquier fecha fija que te sirva, no necesariamente debe ser la fecha de hoy, todo dependerá de tu caso.
=TODAY()
A partir de ahí, intentaremos obtener el primer y último día del mes actual, así como el primer y último día del mes anterior y el mes siguiente. También vamos a ir un mes más allá en cada caso para que el ejemplo quede muy claro.
Último día del mes actual
Lo primero que haremos será calcular el último día del mes actual, porque de aquí podremos movernos fácilmente hacia todas las demás incógnitas. Para eso usaremos la fórmula EOMONTH
, que viene del inglés end of month. Esta fórmula nos permite calcular el último día del mes de cualquier fecha, y al mismo tiempo sumar o restar meses de ella si lo necesitamos:
=EOMONTH(fecha_inicial, meses)
Entonces, en nuestro caso, obtendremos el último día del mes actual, si configuramos nuestra fórmula para usar TODAY y 0 en el número de meses a sumar o restar.
=EOMONTH(TODAY(),0)
Último día del mes anterior y último día del mes siguiente
EOMONTH nos permite fácilmente obtener el último día del mes anterior, si simplemente usamos -1 en el segundo argumento, porque restará un mes a TODAY
:
=EOMONTH(TODAY(),-1)
Y así también podemos obtener el último día de dos meses antes:
=EOMONTH(TODAY(),-2)
El último día del mes siguiente:
=EOMONTH(TODAY(),1)
Y el último día de dos meses siguientes:
=EOMONTH(TODAY(),2)
Este último caso es importante porque la hoja de cálculo está haciendo el cálculo de la fecha por nosotros, y aunque parezca trivial, el hecho de que automáticamente cambie de año nos ahorra mucho esfuerzo de condiciones a considerar.
Como podrás adivinar, esto funciona para cualquier número de meses, e incluso años si multiplicas por 12 el argumento de los meses.
Primer día del mes actual
Pasemos ahora a calcular el primer día del mes actual. Para esto tenemos dos alternativas. La primera es usar la fórmula DATE()
, que nos pide un año, un mes y un día para construir una fecha. A su vez, para que funcione, tendremos que usar la fórmula YEAR()
y la fórmula MONTH()
, que devuelven el año y mes de una fecha correspondientemente, en combinación con TODAY()
para obtener cada dato por separado. Y por último, el primer día siempre será 1.
=DATE(YEAR(TODAY()),MONTH(TODAY()),1)
La segunda alternativa, y mi preferida por ser mucho más ingeniosa y resumida, es usar la fórmula EOMONTH
que ya conocemos. Esta vez, simplemente sumaremos 1 día al último día del mes anterior, y así fácilmente obtendremos el primer día del mes actual:
=EOMONTH(TODAY(),-1)+1
Primer día del mes anterior y primer día del mes siguiente
Si seguimos usando la fórmula EOMONTH, podemos obtener fácilmente el primer día del mes anterior, si restamos dos meses dos meses al mes actual, posicionándonos en el último día, y sumamos un día a este:
=EOMONTH(TODAY(),-2)+1
Funciona igual si queremos ir dos o cualquier número de meses más atrás, si vamos restando el argumento de meses de EOMONTH:
=EOMONTH(TODAY(),-3)+1
Para el primer día del mes siguiente, haremos lo mismo usando EOMONTH, pero ahora solamente debemos sumar un día al último día del mes actual:
=EOMONTH(TODAY(),0)+1
Y lo mismo haremos para dos meses en el futuro:
=EOMONTH(TODAY(),1)+1
Con esto casi hemos completado la matriz de fechas que nos propusimos, y ya tenemos una forma muy eficiente de calcular el inicio y final de cualquier mes a partir de una fecha determinada.
Sumar o restar meses desde la fecha actual
Si queremos simplemente ir hacia adelante o atrás en número de meses desde la fecha actual, sin importar si es primero o último de mes, entonces la fórmula que nos ayudará será EDATE, que hace precisamente eso, y probablemente recordarás de un post anterior:
=EDATE(fecha_inicial, meses)
Por ejemplo, la fórmula para el mes anterior a partir de la fecha actual, será:
=EDATE(TODAY(),-1)
Y así, para todos los demás casos de nuestra matriz:
¡Y listo! Ahora ya sabes cómo moverte entre fechas en relación al mes que necesites fácilmente.
Guía en video
Si tienes dudas puedes ver esta misma guía explicada en video:
¡Espero que te haya sido útil esta guía! No olvides seguirnos en YouTube para más tips, trucos y guías de productividad.
Alekz es un apasionado de la tecnología y los videojuegos. Además de ser locutor comercial, disfruta de la expresión artística más sastisfactoria y técnica que existe: programar (y pintar algo de pixel art). Fundó Tesel para ayudar a empoderar a las empresas a desarrollar su máximo potencial mediante la tecnología. Es un absoluto nerd de Star Trek.
Alekz es un apasionado de la tecnología y los videojuegos. Además de ser locutor comercial, disfruta de la expresión artística más sastisfactoria y técnica que existe: programar (y pintar algo de pixel art). Fundó Tesel para ayudar a empoderar a las empresas a desarrollar su máximo potencial mediante la tecnología. Es un absoluto nerd de Star Trek.