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.

excel

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

13 comments

  • Giuseppe PRIMO

    Ho provato a calcolare l’età con la formula indicata ma il risultato e’ il seguente: #NOME?
    Come posso ovviare?
    Grazie
    Giuseppe PRIMO

    • Mikis

      Giuseppe, nel fare copia e incolla della formula vengono fuori delle virgolette che Excel non accetta. Bisogna sostituirle a mano col carattere “. Funziona ?

  • gianpaolo

    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 ???

    • Mikis

      Gianpaolo, ho provato la formula come l’hai indicata e mi restituisce correttamente 23. Prova a controllare i dati

  • gianpaolo

    (naturalmente in A3 c’è la prima data e in B3 la seconda !!!)

  • Riccardo

    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!

    • Mikis

      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 ? 😉

  • erica

    grazie!!! 🙂

  • Pietro

    Sostituendo le virgolette, funziona a meraviglia

  • Carla

    a me inserendo questa formula =DATA.DIFF(OGGI();C3;”m”) mi esce l’errore #NUM! come mai?

    • Mikis

      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.

  • Ettore

    Come faccio ad applicare la formula di differenza di data quando la data di riferimento può essere precedente o successiva, e non solo precedente?

    • Mikis

      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.

Rispondi a Riccardo Annulla risposta