Le date sono una delle principali fonti di confusione nei fogli di calcolo. Una colonna che sembra piena di date si rifiuta di essere ordinata correttamente, una sottrazione restituisce un numero a cinque cifre, un file aperto su un altro computer mostra il 3 aprile al posto del 4 marzo. Quasi tutti questi problemi spariscono quando si capisce come il programma rappresenta le date internamente.
Le date sono numeri
Per un foglio di calcolo una data è un numero seriale: il numero di giorni trascorsi da un'origine. In Excel per Windows il giorno 1 corrisponde al 1° gennaio 1900; LibreOffice Calc e Google Sheets usano come giorno zero il 30 dicembre 1899, con il risultato che per le date moderne i numeri coincidono con quelli di Excel. Il formato che vedi (gg/mm/aaaa, «4 marzo 2026») è solo una veste applicata a quel numero.
Le ore sono la parte decimale: mezzogiorno è 0,5, le 18:00 sono 0,75. Una data con orario è quindi un numero come 46085,75.
Da questo derivano alcune conseguenze pratiche:
- sottrarre due date restituisce i giorni tra di esse;
- aggiungere 30 a una data restituisce la data 30 giorni dopo;
- se una sottrazione mostra una «data strana» come 17/01/1900, la cella ha ereditato il formato data: cambialo in Numero e vedrai i giorni.
Come capire se una data è vera
Un test rapido: una data vera, senza formato particolare, si allinea a destra nella cella come i numeri; una data salvata come testo si allinea a sinistra. In modo più rigoroso, =VAL.NUMERO(A2) restituisce VERO solo per le date reali.
Le date-testo arrivano quasi sempre da importazioni o da copia e incolla da altri programmi. Si convertono con DATA.VALORE, se il formato del testo è compatibile con le impostazioni regionali, oppure scomponendo il testo:
=DATA(DESTRA(A2;4); STRINGA.ESTRAI(A2;4;2); SINISTRA(A2;2))
che trasforma il testo «04/03/2026» nella data corrispondente indipendentemente dalle impostazioni del computer.
Costruire e scomporre le date
=OGGI()restituisce la data odierna,=ADESSO()data e ora; entrambe si aggiornano a ogni ricalcolo.=DATA(anno; mese; giorno)costruisce una data dai suoi componenti ed è il modo più sicuro di scrivere una data dentro una formula.ANNO,MESE,GIORNOestraggono i componenti;GIORNO.SETTIMANArestituisce il giorno della settimana come numero.
DATA gestisce da sola gli sconfinamenti: =DATA(2026; 13; 1) restituisce il 1° gennaio 2027 e =DATA(2026; 3; 0) l'ultimo giorno di febbraio 2026. È un comportamento molto utile per calcolare scadenze.
Calcoli frequenti
| Esigenza | Formula |
|---|---|
| Giorni tra due date | =B2-A2 |
| Stessa data tra 3 mesi | =DATA.MESE(A2; 3) |
| Ultimo giorno del mese | =FINE.MESE(A2; 0) |
| Fine del mese successivo | =FINE.MESE(A2; 1) |
| Giorni lavorativi tra due date | =GIORNI.LAVORATIVI.TOT(A2; B2; Festivi) |
| Data dopo 10 giorni lavorativi | =GIORNO.LAVORATIVO(A2; 10; Festivi) |
| Anni compiuti | =DATA.DIFF(A2; OGGI(); "y") |
Qualche nota:
- DATA.MESE gestisce correttamente i mesi di lunghezza diversa: tre mesi dopo il 30 novembre restituisce il 28 febbraio (o il 29 negli anni bisestili).
- FINE.MESE è la funzione giusta per le scadenze del tipo «60 giorni fine mese» nelle fatture:
=FINE.MESE(A2+60; 0), se l'accordo prevede di aggiungere i giorni e poi andare a fine mese. Verifica sempre l'interpretazione concordata con il cliente. - GIORNI.LAVORATIVI.TOT e GIORNO.LAVORATIVO escludono sabato e domenica; il terzo argomento è un intervallo con le festività da escludere, che devi compilare tu, comprese le feste locali. Esistono anche varianti con suffisso .INTL per settimane lavorative diverse.
- DATA.DIFF non compare nel suggerimento automatico di Excel, ma esiste ed è utile per età e anzianità.
Le ore
Sommare ore lavorate sembra banale finché il totale supera le 24. Con il formato hh:mm, 26 ore vengono mostrate come 02:00, perché il formato rappresenta l'ora del giorno. La soluzione è un formato personalizzato con le parentesi quadre: [h]:mm mostra 26:00.
Per convertire un tempo in ore decimali, necessarie per esempio per moltiplicare per una tariffa oraria, moltiplica per 24:
=(C2-B2)*24
Se un turno attraversa la mezzanotte, la semplice sottrazione restituisce un valore negativo. Si risolve con =RESTO(C2-B2; 1), che riporta il risultato nell'arco delle 24 ore.
Il problema del formato regionale
In Italia scriviamo giorno/mese/anno, negli Stati Uniti mese/giorno/anno. Quando digiti una data, il programma la interpreta secondo le impostazioni regionali del sistema. Finché la data resta un numero non ci sono problemi: aprendo il file su un computer americano verrà solo mostrata in un altro ordine. I guai nascono con le date salvate come testo e con i file CSV, dove «04/03/2026» può diventare 4 marzo o 3 aprile a seconda di chi lo apre.
Nel mio lavoro, quando le date devono viaggiare tra sistemi diversi, uso il formato aaaa-mm-gg (lo standard ISO 8601): è leggibile, si ordina correttamente anche come testo e non lascia ambiguità.
In sintesi
- Le date sono numeri seriali e le ore sono frazioni di giorno.
- Una data allineata a sinistra è probabilmente testo: verificala con VAL.NUMERO.
- Usa DATA() nelle formule, DATA.MESE e FINE.MESE per le scadenze.
- Per totali di ore oltre le 24 usa il formato
[h]:mm; per le ore decimali moltiplica per 24. - Per scambiare date tra sistemi diversi preferisci il formato aaaa-mm-gg.