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.