Seguimi sui social
Profilo LinkedIn Profilo Facebook Profilo Twitter Profilo Google+
Home > Archivio > Excel: differenza tra due date con data.diff

Excel: differenza tra due date con data.diff

Come calcolare la differenza tra due date con Excel

Autore: Andrea Pacchiarotti
Ultimo aggiornamento: 03 Gennaio 2018
Categoria: Microsoft Office Excel

Excel data.diff

Indice Excel: differenza tra due date con data.diff

Calcolare la differenza tra due date in anni, mesi e giorni

Una funzione utilissima è quella che calcola la differenza tra due date in anni, mesi e giorni; ad esempio potrebbe essere utilizzata per calcolare l’anzianità lavorativa o per conoscere l’età di una persona.
La funzione in questione è nascosta ovvero non è elencata nella guida in linea dell’applicativo e non compare neanche tra le oltre 400 funzioni di Excel, ciononostante, se digitata direttamente nella cella, è funzionante.

Si chiama DATA.DIFF() e presenta la seguente sintassi:
=DATA.DIFF(DataIniziale;DataFinale;Intervallo)
DataIniziale è il giorno iniziale del periodo da calcolare
DataFinale è il giorno finale del periodo da calcolare.
Entrambe gli argomenti suddetti possono essere date racchiuse tra doppi apici o riferimenti a celle contenenti una data.
Intervallo è una stringa che contiene l’unità di misura per ottenere il risultato e può assumere i seguenti valori:

  • d: numero di giorni tra le due date, compresi gli estremi
  • m: numero di mesi interi tra le due date (se DataIniziale parte dopo il primo mese, tale mese non verrà incluso nel computo)
  • y: numero di anni interi tra le due date (se ad esempio DataIniziale parte dopo il 1° gennaio, tale anno non verrà incluso nel computo)
  • yd: numero di giorni tra le due date tralasciando gli anni
  • md: numero di giorni tra le due date tralasciando i mesi e gli anni
  • ym: numero di mesi tra le due date tralasciando i giorni e gli anni

Excel data.diff
Possibili errori:

  • #NUM: DataIniziale è maggiore di DataFinale o Intervallo non è indicato correttamente
  • #VALORE: una o entrambe le date hanno un formato data non riconosciuto


Se ad esempio si volesse calcolare l’anzianità lavorativa di un impiegato assunto il 1° gennaio 2010 si dovrà usare la seguente formula che contiene anche la funzione OGGI() utile per restituire la data corrente e l’operatore di concatenazione &, utilizzando OGGI() si ha la comodità che il risultato sarà sempre aggiornato alla data corrente, cioè al giorno in cui si apre il file Excel, qualsiasi data sia:
=DATA.DIFF("01/01/2010";OGGI();"y") & " anni, " & DATA.DIFF("01/01/2010";OGGI();"ym") & " mesi, " & DATA.DIFF("01/01/2010";OGGI();"md") & " giorni"
A seconda della data corrente si avrà qualcosa del tipo:
6 anni, 11 mesi, 23 giorni
Ovviamente nulla vieta di avere i 3 riferimenti relativi agli anni, ai mesi e ai giorni in 3 celle diverse; in tal caso basterà mettere le 3 componenti la formula in celle diverse, ad esempio:
=DATA.DIFF("01/01/2010";OGGI();"y")
=DATA.DIFF("01/01/2010";OGGI();"ym")
=DATA.DIFF("01/01/2010";OGGI();"md")

Un altro esempio potrebbe consistere nel voler invece un risultato che non si aggiorni nel tempo come nel caso della differenza tra due date fisse.
Supponendo che nella cella A1 ci sia 01/01/2010 e nella cella B1 ci sia 10/02/2020 le formule risulteranno le seguenti:
=DATA.DIFF(A1;B1;"y")
=DATA.DIFF(A1;B1;"ym")
=DATA.DIFF(A1;B1;"md")


Sommare e detrarre anni, mesi e giorni di più intervalli temporali

Si supponga di aver calcolato 4 intervalli temporali, 3 da sommare ed uno da scorporare come nell'immagine proposta
Sommare e detrarre anni, mesi e giorni di più intervalli temporali
Per ottenere il totale in anni, mesi e giorni vanno calcolate le 3 seguenti formule:
In D7: =SOMMA(D3:D6)+INT((SOMMA(E3:E6)+INT(SOMMA(F3:F6)/30))/12)
In E7: =RESTO(SOMMA(E3:E6)+INT(SOMMA(F3:F6)/30);12)
In F7: =RESTO(SOMMA(F3:F6);30)
Ovviamente i DATA.DIFF della riga 5 vanno con il segno negativo dovendo essere un intervallo da scorporare e quindi:
=-DATA.DIFF(B5;C5;"y") per gli anni e così via per mesi e giorni


Calcoli per date precedenti il 1900

Excel memorizza le date come numeri sequenziali chiamati valori seriali. Per esempio in Excel per Windows, il 1° gennaio 1900 equivale al numero seriale 1 mentre il 1° gennaio 2018 al numero seriale 43.101 (per visualizzare le date come valori seriali è necessario modificare il formato delle celle interessate impostando Generale). Excel per Mac ed Excel per Windows supportano entrambi i sistemi di data 1900 (predefinito in Excel) e 1904 (predefinito in Mac).
Essendo valori sulle date si possono eseguire calcoli come la somma o la sottrazione, ma per quanto appena detto, solo per valori fino al 1900.
Per gestire date antecedenti si può utilizzare il componente aggiuntivo gratuito XDATE.xla di John Walkenbach. Esso aggiunge 8 nuove funzioni ad Excel:

  • XDATE: fornisce una data per un certo anno, mese e giorno
  • XDATEADD: aggiunge un certo numero di giorni a una data
  • XDATEDIF: fornisce il numero di giorni tra due date
  • XDATEYEARDIF: fornisce il numero di anni tra due date
  • XDATEYEAR: fornisce l'anno di una data
  • XDATEMONTH: fornisce il mese di una data
  • XDATEDAY: fornisce il giorno di una data
  • XDATEDOW: fornisce il giorno della settimana di una data, ovvero un intero tra 1 e 7

Per attivare il componente XDATE.xla bisogna aprire le Opzioni di Excel e raggiungere i Componenti aggiuntivi, cliccare Vai e spuntare la casella di controllo opportuna. Se non compare il componente aggiuntivo desiderato, questo deve essere prima installato; ci sono più modi a seconda del componente, ad esempio cliccando su Sfoglia nella finestra Componenti aggiuntivi o attraverso un pacchetto di installazione che solitamente ha estensione msi o infine dall'Area download di Microsoft.


Se Excel: data.diff è stato utile, seguimi sui Social networks cliccando i pulsanti in alto a destra di questa pagina.

Per restare aggiornato sulla pubblicazione di nuovi articoli su Microsoft Office e Web in generale iscriviti gratuitamente alla newsletter


Se invece vuoi condividere questo articolo nella tua Rete sociale, puoi utilizzare i bottoni qui sotto: