Σ Fogli di calcolo

Date e ore nei fogli di calcolo: come funzionano davvero

Perché le date sono numeri, come calcolare differenze, giorni lavorativi, scadenze a fine mese e ore lavorate, evitando i problemi del formato regionale.

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, GIORNO estraggono i componenti; GIORNO.SETTIMANA restituisce 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.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche