Come aggiungere mese ad oggi in LibreOffice calc


23

Sembra una domanda ovvia.

Ho una colonna di date e voglio creare una formula per aumentarla di un mese per ogni colonna.

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

Come si aggiunge un mese a una data?

Risposte:


16

La risposta attualmente preferita salterà brevi mesi che seguono quelli lunghi

Impostare A1 = 2014-01-31 Quindi il risultato usando = DATA (ANNO (A1), MESE (A1) +1, GIORNO (A1)) sarà 03-03-2014, saltando così febbraio.

L'approccio EDATE suggerito sopra perde giorni

Brevi mesi fanno cadere EDATE giorni per i mesi successivi. Ad esempio = EDATE (DATE (2014,1,31), 1) produce il 28-02-2014, ma applicandolo nuovamente si ottiene il 28/03/2014, che non è l'ultimo giorno di marzo.

Una soluzione che funziona: incrementa i mesi con il giorno impostato su zero

Imposta il giorno su zero e incrementa i mesi, con un mese di anticipo. Ad esempio, per iniziare a gennaio utilizzare DATE (2014,2,0) => 2014-01-31 quindi DATE (2014,3,0) => 2014-02-28, quindi DATE (2014,4,0) -> 2014 -03-31 come ci si aspetterebbe seguendo logicamente l'ultimo giorno di ogni mese.

Altri approcci

Le rettifiche possono essere effettuate se si desidera l'ultimo giorno lavorativo del mese o incrementi di 30 giorni senza saltare i mesi, ecc. Dipende dall'obiettivo.


edateha funzionato per me senza il problema di cui parli (Versione: 4.2.7.2)
Tim Abell,

1
Tim per vedere edate fallire, posizionalo nella cella C4 = Date (2014.01,31) e posizionalo in C7 = EDATE (C4,1) e mostrerà correttamente il 28-02-2014. tuttavia ora posizionalo nella cella C8 = EDATE (C7,1) e fornirà un valore errato, 2014-03-28 che non è l'ultimo giorno di marzo. Tim, stai vedendo l'ultimo giorno di marzo in questo secondo passo? (Versione 3.5.4.2 - versione aggiornata su questa distro Debian)

1
Ah, capisco cosa intendi adesso. Grazie per il chiaro esempio. Dimentico quello che stavo facendo ora, ma penso di non aver toccato quel caso limite e di non aver seguito la finezza di ciò che mi hai spiegato. Ottimo post.
Tim Abell,

19
=edate(a1;1)
  • edate restituisce la data che è il numero specificato di mesi dopo o prima della data specificata.
  • Primo argomento di edate: data di inizio.
  • Secondo argomento di edate: numero del mese. Se negativo, edate calcola la data precedente.

2
non avrei mai indovinato con il nome! grazie :-)
Tim Abell,


1
fai attenzione ai problemi in cui non esiste un giorno equivalente del mese nel nuovo mese. superuser.com/a/774808/8271
Tim Abell,

7

Come indicato nel riferimento: Date Arithmetic , questo aggiunge uno al mese:

=DATE(YEAR(A1), MONTH(A1)+1, DAY(A1))

4
Fai attenzione se inizi in un giorno che non ha equivalenti: ad es. 31 agosto + 1 mese viene calcolato come 1 ottobre perché non c'è 31 settembre
Tim Abell,

0

Penso che potrebbe essere necessario utilizzare le etichette poiché le date vengono memorizzate proprio come i numeri che vengono quindi visualizzati nel formato scelto. Per aggiungere un mese avrai bisogno di un calcolo complesso per determinare quanti giorni ti porteranno al mese successivo. Spero di sbagliarmi e qualcuno abbia una risposta.


Ho anche pensato a un litigio insieme a un complicato algoritmo di aggiunta di 31 giorni alla data, per poi tornare al primo del mese. Entrambe le strade sembrano eccessivamente difficili.
trimbletodd,

Ci possono essere alcune idee su questo sito che potrebbero aiutarti. cpearson.com/excel/datearith.htm
Brian

Ottimo riferimento Sembra che funzioni.
trimbletodd,

0

FWIW questa è la soluzione che ho usato dove sono importanti il ​​mese e l'anno:

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

Cella della prima riga per impostare la data di inizio come oggetto data. Le celle seguenti prendono la cella precedente, ottengono la fine del mese, quindi aggiungono un giorno ( A2 = 2016/01/31 + 1). Funziona con LibreOffice Calc e Google Spreadsheets.


0

Per anno, mese, giorno con incrementi di un mese, stesso giorno del mese (come l'ultimo giorno tenendo conto degli anni bisestili):

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))"

Quindi trascina A4 verso il basso per quanto desideri. Produce questo output:

01/31/11
02/28/11
03/31/11
...
02/29/12
03/31/12
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.