Cómo agregar el mes hasta la fecha en LibreOffice calc

23

Esto parece una pregunta obvia.

Tengo una columna de fecha y quiero crear una fórmula para aumentarla en un mes para cada columna.

10/2013, 11/2013, 12/2013, 1/2014, 2/2014, ...

¿Cómo agrega un mes a una fecha?

trimbletodd
fuente

Respuestas:

16

La respuesta preferida actualmente se saltará los meses cortos que siguen a los largos.

Establezca A1 = 2014-01-31 Entonces el resultado usando = FECHA (AÑO (A1), MES (A1) +1, DÍA (A1)) será 2014-03-03, omitiendo así febrero.

El enfoque EDATE sugerido anteriormente pierde días

Los meses cortos hacen que EDATE caiga días por meses sucesivos. Por ejemplo, EDATE (DATE (2014,1,31), 1) produce 2014-02-28, pero aplicarlo nuevamente resulta en 2014-03-28, que no es el último día de marzo.

Una solución que funciona: incremente los meses con el día establecido en cero

Establezca el día en cero e incremente los meses, mientras se adelanta un mes. Por ejemplo, para comenzar en enero use DATE (2014,2,0) => 2014-01-31 luego DATE (2014,3,0) => 2014-02-28, luego DATE (2014,4,0) -> 2014 -03-31 como cabría esperar siguiendo lógicamente el último día de cada mes.

Otros enfoques

Se pueden hacer ajustes si desea el último día hábil del mes, o incrementos de 30 días sin omitir meses, etc. Depende del objetivo.


fuente
edatefuncionó para mí sin el problema que mencionas (Versión: 4.2.7.2)
Tim Abell
1
Tim para ver que edate falla, colóquelo en la celda C4 = Fecha (2014,01,31) y colóquelo en C7 = EDATE (C4,1) y mostrará correctamente 2014-02-28. sin embargo, ahora coloque en la celda C8 = EDATE (C7,1) y dará el valor incorrecto, 2014-03-28, que no es el último día de marzo. Tim, ¿estás viendo el último día de marzo en este segundo paso? (Versión 3.5.4.2 - versión actualizada en esta distribución de Debian)
1
Ah, ya veo a qué te refieres ahora. Gracias por el claro ejemplo. Olvidé lo que estaba haciendo ahora, pero creo que no llegué a ese caso y no había seguido la sutileza de lo que me había explicado. Buena publicación.
Tim Abell
19
=edate(a1;1)
  • edate devuelve la fecha que es el número especificado de meses después o antes de la fecha especificada.
  • Primer argumento de edate: fecha de inicio.
  • Segundo argumento de edate: número de mes. Si es negativo, edate calcula la fecha anterior.
Tarik FDIL
fuente
2
nunca hubiera adivinado por el nombre! gracias :-)
Tim Abell
documentación help.libreoffice.org/Calc/EDATE
Tim Abell
1
cuidado con los problemas en los que no hay un día equivalente del mes en el nuevo mes. superuser.com/a/774808/8271
Tim Abell
7

Como se indica en la referencia: Aritmética de fecha , esto agrega uno al mes:

=DATE(YEAR(A1), MONTH(A1)+1, DAY(A1))
trimbletodd
fuente
44
Tenga en cuenta que si comienza en un día que no tiene equivalente: por ejemplo, el 31 de agosto + 1 mes se calcula como el 1 de octubre porque no hay 31 de septiembre.
Tim Abell
0

Creo que es posible que necesite usar etiquetas ya que las fechas se almacenan como números que luego se muestran en el formato que elija. Para agregar un mes, necesitará un cálculo complejo para determinar cuántos días lo llevará al próximo mes. Espero estar equivocado y alguien tenga una respuesta.

BrianA
fuente
También pensé en discutir un complicado algoritmo de agregar 31 días a la fecha y luego volver al primero del mes. Ambas formas parecen demasiado difíciles.
trimbletodd
Puede haber algunas ideas en este sitio que podrían ayudarlo. cpearson.com/excel/datearith.htm
BrianA
Gran referencia Parece que funciona
trimbletodd
0

FWIW esta es la solución que utilicé donde importa el mes y el año:

A1=DATE(2016,1,1)
A2=EOMONTH(A1,0)+1

Celda de primera fila para establecer la fecha de inicio como un objeto de fecha. Las siguientes celdas toman la celda anterior, obtienen el final del mes y luego agregan un día ( A2 = 2016/01/31 + 1). Funciona para LibreOffice Calc y Google Spreadsheets.

Thien
fuente
0

Para año, mes, día que se incrementa en un mes, el mismo día del mes (como el último día contabilizando los años bisiestos):

A1 "DATE" # Label of column
A2 "=DATE(2011, 2, 0)"
A3 "=EDATE(A$2,COUNTA(A$2))"
A4 "=EDATE(A$2,COUNTA(A$2:A3))"

Luego arrastre A4 hacia abajo todo lo que quiera. Produce esta salida:

01/31/11
02/28/11
03/31/11
...
02/29/12
03/31/12
Matt Kneiser
fuente