martedì 29 settembre 2009

Calcolare i mesi in Excel

Tempo fa abbiamo parlato dei calcoli con le date in Excel. Un argomento sempre interessante (vedi i post precedenti: http://didalgo.blogspot.com/2008/01/calcoli-con-le-date-in-excel.html e http://didalgo.blogspot.com/2007/07/operazioni-con-le-date-in-excel.html). Ora vogliamo scoprire se si può calcolare una differenza tra date per ottenere come risultato non i giorni (l'abbiamo già visto in uno dei post che ho citato prima), ma i mesi (o gli anni o altro ancora). Si può fare. Dobbiamo utilizzare la funzione DATA.DIFF, che è una di quelle "non documentate". Che cosa significa? Che se la cerchiamo in Excel, non compare nella guida! Vai a sapere le stranezze di Excel...
Comunque la funzione è molto semplice. DATA.DIFF ha 3 argomenti: il primo è la data più vecchia, il secondo è la data più recente, il terzo indica come vuoi che Excel calcoli la differenza. E' possibile usare come terzo argomento: "d" (differenza in giorni), "m" (differenza in mesi), "y" (differenza in anni), "md" (differenza in giorni, ma ignora mesi e anni), "ym" (differenza in mesi, ma ignora giorni e anni); "yd" (differenza in giorni, ma ignora anni e mesi).
Attenzione perché il terzo argomento va racchiuso tra virgolette.
Qualche esempio? In B3 scrivete 10/05/2004 e in C3 09/05/2009.
  • In D3 scrivete: =Date.Diff(B3;C3;"yd") risultato: 364 (differenza in giorni senza contare anni: provate a mettere anche 1999 come data di inizio e non cambia il risultato)
  • In D3 scrivete: =Date.Diff(B3;C3;"m") risultato: 59 (differenza in mesi)
  • In D3 scrivete: =Date.Diff(B3;C3;"md") risultato: 29 (differenza in giorni senza contare anni o mesi). Per capirci: 29 sarebbero i giorni che mancano per andare dal 10 al 9 del mese successivo... Un po' contorto, ma può anche servire...
Provate le varie combinazioni e... buon lavoro, in particolare a chi mi ha chiesto informazioni sul problema!

Emanuele

3 commenti:

Anonimo ha detto...

Grande Emanuele!

Ottimo.
Anche la soluzione [(data2 - data1)/(365+6/24)], ma rimangono in giro i decimali che non sono molto professionali, in un calcolo del genere.
Invece la soluzione DATA.DIFF è perfetta per il mio fine.
Ah, voglio proprio studiarmelo bene sto programma.
(Coului che aveva chiesto per calcolare l'ammortamento dei cespiti)

Anonimo ha detto...

Ahhh, ecco cosa non mi tornava!

Lui così calcola il cambiamento nel valore "mese", cioè probabilmente non lo fa, ma il risultato è quello.
Mi spiego:
normalmente, almeno in Italia, in contabilità indico la mensilità con 01/mm/aa 31/mm/aa.
Però per Excel, con la formula =DATA.DIFF(Xx;Xx;m), calcola, nel caso di date quali 01/01/2000 e 31/12/2000, 11 mesi.
Ha ragione, ma ciò lo rende meno utile nel campo di applicazione specifico, a mio avviso.
Forse è per questo che non è "ufficiale", la formula.

emanuele ha detto...

molto bene. mi spiace solo che tu non abbia visto prima il mio post. se nascono altri quesiti usando Excel (tipo, che so, individuare automaticamente la data di fine mese, o di inizio mese, o chissà cos'altro, fammi sapere e didaLGo provvederà!
buona giornata