#Excel – Come calcolare agevolmente la differenza tra due date

DATA.DIFF() è una funzione “nascosta” di Excel utile per calcolare la differenza, in anni, mesi e giorni, tra due date. L’ho chiamata “nascosta” perchè è una funzione non documentata, il che significa che non è elencata tra le altre funzioni nell’help in linea e non esiste neanche tra le funzioni presenti nella scheda FORMULE della barra multifunzione di Excel.

Ma non è una nuova funzione: fu introdotta in Excel 5.0 e Microsoft la documentò in Excel 2000, poi però la documentazione venne rimossa nelle versioni più recenti.

Probabilmente Microsoft incluse la funzione per garantire la compatibilità con Lotus 1-2-3 e non dichiarò mai il motivo della rimozione della relativa documentazione. C’è chi dice per questioni legali, altri affermano invece che il motivo risieda nella troppa somiglianza (in inglese) con la funzione incorporata in VBA datediff(). Sta di fatto che, mentre la documentazione è sparita, la funzione è rimasta, sebbene conosciuta a pochi.

Essendo una funzione non documentata, non aspettatevi di ricevere un aiuto da Excel durante la digitazione di una formula che la contenga; è per questo che è molto importante conoscerne la sintassi:

=DATA.DIFF(data_iniziale; data_finale; "intervallo")

  • data_iniziale è la data che indica il giorno di inizio del periodo che vogliamo calcolare. Può essere indicata sia come una data vera e propria (racchiusa tra doppi apici: “), sia come riferimento ad una cella contenente una data;
  • data_finale è la data finale del periodo scelto. Anche in questo caso può essere indicata sia come data, sia come riferimento di cella;
  • intervallo è l’unità di misura sulla cui base vogliamo ci venga restituito il risultato. Può assumere uno dei seguenti valori:
Codice Significato Descrizione
“m” Mesi Il numero di mesi interi tra le due date
“d” Giorni Il numero di giorni tra le due date
“y” Anni Il numero di anni interi tra le due date
“ym” Mesi escludendo gli anni Il numero di mesi tra le due date, come se fossero nello stesso anno
“yd” Giorni escludendo gli anni Il numero di giorni tra le due date, come se fossero nello stesso anno
“md” Giorni escludendo gli anni e i mesi Il numero di giorni tra le due date, come se fossero nello stesso anno e nello stesso mese
LEGGI:  #Excel - Come usare la funzione CERCA.VERT
datadiff

 

Alcuni errori che potreste incontrare

DATA.DIFF restituisce l’errore #NUM quando data_iniziale è maggiore di data_finale oppure quando “intervallo” non è stato indicato correttamente. Restituisce invece l’errore #VALORE quando una delle due date o entrambe non sono state inserite in un formato data riconosciuto.

Il calcolo della propria età

Uno degli utilizzi più comuni di questa funzione è legato al calcolo dell’età.

In effetti inserendo oggi in una cella la seguente formula:

=DATA.DIFF("13/03/1971";OGGI();"y") & " anni, " & DATA.DIFF("13/03/1971";OGGI();"ym") & " mesi e " & DATA.DIFF("13/03/1971";OGGI();"md") & " giorni"

Excel mi dice:  43 anni, 9 mesi e 9 giorni …secondo me questa funzione non funziona!!! 😉
…a parte gli scherzi

ATTENZIONE
Alcuni sostengono che non sia sicuro utilizzare la funzione DATA.DIFF(), soprattutto se viene inserita in un lavoro importante. Siccome è una funzione non documentata, Microsoft potrebbe da un momento all’altro cessare di supportarla.

Esiste una valida alternativa?

Ma esiste una valida alternativa all’utilizzo di questa funzione? Purtroppo la risposta è NO. Nessun’altra funzione può darci le stesse funzionalità.

Al fine di non incappare in un futuro (quanto improbabile) abbandono della funzione da parte di Microsoft, potremmo pensare di crearci una nostra funzione personalizzata, funzionalità che in Excel viene chiamata UDF (User Defined Functions), in modo da sfruttare la funzione Datediff() incorporata in VBA (funzione invece pienamente supportata).

Apriamo il nostro file di Excel e premiamo la combinazione di tasti Alt+F11 per attivare l’editor VBA. A questo punto inseriamo un nuovo modulo come nella figura seguente:

LEGGI:  #Excel - Come usare CONTA.PIÙ.SE e CONTA.SE con più di un criterio

 diffdata2

 Sul modulo appena creato inseriremo il seguente codice

  1. Function DIFFDATA(Data_iniziale As Date, Data_finale As Date, Intervallo As String) As String
  2. DIFFDATA = DateDiff(Intervallo, Data_iniziale, Data_finale)
  3. End Function

Vediamo a questo punto come Excel riconosca la funzione appena creata

diffdata3

Rispetto alla funzione di default, la nostra UDF accetta dei valori leggermente diversi relativamente al parametro “Intervallo”:

Codice Descrizione
“yyyy” Anni
“q” Trimestri
“m” Mesi
“y” Giorni
“d” Giorni
“w” Settimane
“ww” Settimane del calendario
“h” Ore
“n” Minuti (visto che “m” sta per mesi)
“s” Secondi

INFO
Mentre utilizzare il parametro “y” oppure “d” è sostanzialmente uguale, tra i parametri “w” e “ww” c’è una sottile differenza in quanto “ww” effettua il calcolo tra il primo giorno della settimana in cui è collocata la Data_iniziale e il primo giorno della settimana in cui è collocata la Data_finale.

datadiff4

Punti di attenzione

  1. A differenza della funzione standard, la nostra UDF restituirà un risultato valido anche nel caso di differenze negative;
  2. Nel caso di “Intervallo” impostato su “yyyy” il valore restituito viene calcolato prendendo in considerazione solo l’anno delle due date inserite, nel caso di “Intervallo” impostato su “m” il valore restituito viene calcolato prendendo in considerazione solo l’anno e il mese delle due date inserite e nel caso di “Intervallo” impostato su “q” il valore restituito viene calcolato prendendo in considerazione i trimestri ai quali appartengono le due date. Ciò vuol dire che, ad esempio, confrontando il 31/12 e il 01/01 dell’anno seguente, la UDF restituirà 1 per gli intervalli “yyyy”, “m” e “q”, anche se è trascorso un solo giorno.

Quindi, la nostra UDF, purtroppo, non ci sarà di aiuto per calcolare la nostra età, a meno di concatenarla con n altre funzioni.

LEGGI:  #Excel - La funzione IDENTICO() - Parte 2

LE SCHEDE TECNICHE DELLE FUNZIONI UTILIZZATE

Copyright © 2014-2017  Office Academy. Tutti i diritti riservati.
Vai alla barra degli strumenti