Calcolo delle date con Excel
Questo è un articolo che avevo pubblicato svariato tempo fa su un sito che oggi non esiste più. In considerazione del notevole successo che ebbe ho deciso di riproporlo qui nella speranza che risulti ancora utile.
La funzione DATA.DIFF di Excel è una funzione disponibile fino dalla versione 5, ma non è stata documentata e non rientra nell’elenco delle funzioni disponibili nella categoria Data e ora.
Probabilmente la presenza di questa funzione è da fare risalire alla compatibilità con Lotus 1-2-3, offerta da Excel, ma evidentemente non pienamente presa in considerazione. Infatti la versione italiana di Excel 2000 necessita di inserire le date in formato anglosassone (mese-giorno-anno), mentre nella versione 2003 è supportato il formato europeo (giorno-mese-anno). E’ comunque sempre necessario fare riferimento ai parametri in lingua inglese per avere i risultati.
DATA.DIFF permette di calcolare la differenza tra due date, in giorni, mesi o anni.
La sintassi è:
=DATA.DIFF(data1; data2; intervallo)
dove
data1 è la prima data, nel formato standard di Excel, numero seriale
data2 è la seconda data, nel formato standard di Excel, numero seriale
intervallo è l’unità temporale in base alla quale calcolare la differenza
data1 deve essere minore (precedente) o uguale a data2, altrimenti viene restituito l’errore #NUM.
L’errore #VALORE viene indicato se data1 o data2 non sono un valore data.
Intervallo deve essere uno dei seguenti
Codice | Significato | Descrizione |
“m” | Mesi | Numero di mesi completi tra data1 e data2 |
“d” | Giorni | Numero di giorni completi tra data1 e data2 |
“y” | Anni | Numero di anni completi tra data1 e data2 |
“ym” | Mesi escludendo gli anni | Il numero di mesi tra data1 e data2, considerando data1 e data2 nello stesso anno |
“yd” | Giorni escludendo gli anni | Il numero di giorni tra data1 e data2, considerando data1 e data2 nello stesso anno |
“md” | Giorni escludendo gli anni e i mesi | Il numero di giorni tra data1 e data2, considerando data1 e data2 nello stesso mese e anno |
Calcolo dell’età
Un uso diffuso della funzione DATA.DIFF è per calcolare l’età di una persona, basandosi quindi sulla data di nascita e quella odierna.
Considerando che la data di nascita sia nella cella A1, la formula seguente calcola l’età precisa.
=DATA.DIFF(A1;OGGI();”y”) & ” anni, ” & DATA.DIFF(A1;OGGI();”ym”) & ” mesi, ” & DATA.DIFF(A1;OGGI();”md”) & ” giorni”
Il risultato sarà simile a:
35 anni, 1 mesi, 18 giorni
Ho provato a calcolare l’età con la formula indicata ma il risultato e’ il seguente: #NOME?
Come posso ovviare?
Grazie
Giuseppe PRIMO
Giuseppe, nel fare copia e incolla della formula vengono fuori delle virgolette che Excel non accetta. Bisogna sostituirle a mano col carattere “. Funziona ?
Ciao, se calcolo la differenza in giorni dalla data 20/12/2025 alla 12/01/2044 con la formula =DATA.DIFF(A3;B3;”md”) mi dà 187 giorni !!!!
Suggerimenti ???
Gianpaolo, ho provato la formula come l’hai indicata e mi restituisce correttamente 23. Prova a controllare i dati
(naturalmente in A3 c’è la prima data e in B3 la seconda !!!)
Io riesco a fare la sottrazione anni e mesi, però ho un problema: se la differenza è 45 anni e 2 mesi mi viene scritto 452… come faccio a farlo uscire 45,2? (non me lo fa perchè i mesi sono 12 e non decimali?) dato che poi mi serve per fare una media dell’età con gli altri.. grazie mille!
Riccardo, mi viene da pensare che abbia ricopiato la formula, ma abbia saltato qualche pezzetto. Prova a fare un copia e incolla (correggendo eventualmente le virgolette) e dovresti ottenere un risultato del tipo 45 anni, 2 mesi, 2 giorni.
Giusto ? 😉
grazie!!! 🙂
Sostituendo le virgolette, funziona a meraviglia
a me inserendo questa formula =DATA.DIFF(OGGI();C3;”m”) mi esce l’errore #NUM! come mai?
Ciao, la funzione DATA.DIFF si aspetta che la differenza tra le date sia fatta indicando prima la data minore e poi quella più grande. Probabilmente la data che hai inserito nella cella C3 è una data passata, quindi inferiore a OGGI. Prova a invertire [=DATA.DIFF(C3;OGGI();”m”)] e ti comparirà il risultato.
Come faccio ad applicare la formula di differenza di data quando la data di riferimento può essere precedente o successiva, e non solo precedente?
Ettore, suggerisco di usare una funzione SE con cui vincolare l’esecuzione di DATA.DIFF e decidere come prendere le date, ma è solo la prima cosa che mi viene in mente.