Come calcolare le ore lavorate in Excel (anche notturne)

Francesca Galli
Guida di Francesca Galli · 7 min di lettura

Calcolare quante ore ha lavorato una persona in una giornata sembra l’operazione più semplice del mondo: ora di uscita meno ora di entrata. Eppure è uno dei calcoli che genera più errori in Excel, e li vedo continuamente nei fogli presenze che le aziende mi sottopongono. Il motivo è che le ore, per Excel, non sono numeri normali: sono frazioni di giorno. Quando il turno scavalca la mezzanotte, o quando devi trasformare le ore in un importo da pagare, le cose si complicano in modi che non ti aspetti.

In questa guida costruiamo un foglio presenze che funziona davvero: calcola le ore ordinarie, gestisce i turni notturni a cavallo della mezzanotte, sottrae la pausa pranzo, separa gli straordinari e arriva fino al costo della manodopera. Tutte le formule sono in forma inglese con la virgola, l’unica compatibile con il formato xlsx.

Come Excel ragiona sulle ore

La cosa fondamentale da capire è che Excel tratta gli orari come frazioni di un giorno. Le 12:00 sono 0,5; le 18:00 sono 0,75. Questo significa che puoi sottrarre due orari come fossero numeri, ma il risultato resta una frazione di giorno, da formattare e, quando serve, da convertire. Se l’entrata è in A2 e l’uscita in B2, le ore lavorate sono:

=B2-A2

Perché il risultato si veda come “8:00” e non come “0,33”, formatta la cella con il formato ora [h]:mm. Le parentesi quadre intorno alla h sono cruciali: dicono a Excel di non azzerare il conteggio dopo le 24 ore, così potrai sommare i totali settimanali senza sorprese.

Convertire le ore in decimali

Per fare i conti con la paga, le ore in formato orario non bastano: ti serve il numero decimale. Si ottiene moltiplicando la differenza per 24, perché 24 sono le ore di un giorno intero (che per Excel vale 1):

=(B2-A2)*24

Così un turno dalle 09:00 alle 17:00 dà 8 (otto ore decimali), non 0,33. Ricordati di formattare questa cella come numero, non come ora, altrimenti rivedrai un orario.

Il turno che scavalca la mezzanotte

Ecco la trappola classica: un turno che inizia alle 22:00 e finisce alle 06:00. La sottrazione diretta darebbe un risultato negativo, perché 06:00 è “minore” di 22:00 nello stesso giorno, e Excel mostrerebbe una serie di cancelletti (#####). La soluzione elegante è la funzione RESTO, che gestisce il salto di giorno senza condizioni:

=MOD(B2-A2,1)*24

La funzione RESTO calcola il resto della divisione per 1: se la differenza è negativa, le aggiunge automaticamente un giorno intero, restituendo il valore corretto. Il *24 finale converte già in ore decimali. Per il turno 22:00–06:00 il risultato è 8, come deve essere. In alternativa puoi usare la funzione SE: =IF(B2<A2,B2+1-A2,B2-A2)*24, ma RESTO è più compatta e meno soggetta a errori.

Sottrarre la pausa pranzo

Quasi sempre va tolta la pausa. Se hai una colonna con la durata della pausa (ad esempio 1:00) in C2, le ore effettive in decimali diventano:

=MOD(B2-A2,1)*24-C2*24

oppure, tenendo tutto in formato orario prima di convertire, =(MOD(B2-A2,1)-C2)*24. L’importante è che la pausa sia anch’essa in formato orario: se la scrivi come “1” pensando a un’ora, Excel la leggerà come un giorno intero e i conti salteranno. Una pausa di mezz’ora si scrive 0:30.

Un foglio presenze di esempio

Ecco come si presenta una settimana tipo, con un turno notturno il giovedì. Le ore sono già al netto della pausa e in formato decimale.

Giorno Entrata Uscita Pausa Ore
Lunedì 09:00 18:00 1:00 8,00
Martedì 09:00 17:30 0:30 8,00
Mercoledì 08:30 13:00 0:00 4,50
Giovedì 22:00 06:00 0:30 7,50
Venerdì 09:00 19:00 1:00 9,00

Il giovedì notturno (22:00–06:00) viene calcolato correttamente grazie alla funzione RESTO; il venerdì da 9 ore contiene un’ora di straordinario oltre le 8 ordinarie.

Straordinari e costo della manodopera

Una volta che hai le ore in decimali, puoi separare le ordinarie dagli straordinari. Se la colonna E contiene le ore totali della giornata e consideri 8 ore come ordinarie, gli straordinari sono l’eccedenza, mai negativa:

=IF(E2>8,E2-8,0)

Per il totale settimanale delle ore, somma con la funzione SOMMA. Se le ore decimali stanno in E2:E6:

=SUM(E2:E6)

Se invece sommi celle in formato orario, ricordati che la cella totale deve avere il formato [h]:mm, altrimenti Excel riparte da zero dopo 24 ore. Infine, il costo della manodopera è semplicemente ore per tariffa oraria. Con le ore decimali in E2 e la tariffa in F2:

=E2*F2

Con una tariffa di 15,00 € l’ora, 8 ore danno 120,00 €. Formatta questa cella come valuta.

Passi per costruire il foglio

  1. Crea le colonne Giorno, Entrata, Uscita, Pausa, Ore, Straordinari, Costo.
  2. Formatta Entrata, Uscita e Pausa come ora (hh:mm) e inserisci gli orari reali.
  3. Nella colonna Ore scrivi =(MOD(B2-A2,1)-C2)*24 per avere le ore decimali al netto della pausa.
  4. Formatta la colonna Ore come numero con due decimali.
  5. Nella colonna Straordinari scrivi =IF(E2>8,E2-8,0).
  6. Nella colonna Costo scrivi =E2*F2 (ore per tariffa) e formattala come valuta.
  7. In fondo metti =SUM(E2:E6) per il totale settimanale delle ore.

Errori comuni

Formato cella sbagliato. Se vedi ##### o un numero strano come 0,33, la cella non ha il formato giusto. Per gli orari usa hh:mm, per i totali che superano le 24 ore usa [h]:mm, per le ore decimali usa il formato numero. Quasi sempre il problema è qui, non nella formula.

Dimenticare la funzione RESTO sui turni notturni. Una semplice =B2-A2 su un turno che scavalca la mezzanotte dà un valore negativo. Usa sempre =MOD(B2-A2,1)*24 per i turni che possono passare la mezzanotte, così non devi ricordarti caso per caso.

Non sottrarre la pausa. Se la pausa non è retribuita ma resta dentro il calcolo, paghi ore che non sono state lavorate. Tieni una colonna pausa in formato orario e sottraila sempre, anche quando vale zero.

Sommare oltre le 24 ore senza [h]:mm. Senza le parentesi quadre, un totale di 40 ore appare come 16:00, perché Excel azzera ogni 24 ore. È l’errore che fa dubitare delle proprie capacità matematiche, quando è solo un problema di formato.

Domande frequenti

Perché il totale delle ore mi mostra un numero più piccolo del previsto?

Perché la cella non è formattata con [h]:mm. Senza le parentesi quadre, Excel azzera il conteggio ogni 24 ore. Cambia il formato della cella e il totale tornerà corretto, senza toccare le formule.

Come gestisco gli straordinari oltre una soglia diversa da 8 ore?

Cambia il numero nella funzione SE. Se la soglia ordinaria è 6 ore, usa =IF(E2>6,E2-6,0). Puoi anche tenere la soglia in una cella dedicata e richiamarla, così la modifichi in un solo punto se cambia il contratto.

Posso usare lo stesso foglio per più dipendenti?

Sì. Dedica un blocco di righe a ciascuno oppure aggiungi una colonna con il nome e totalizza le ore per persona con la funzione SOMMA.SE. Per pochi dipendenti il primo metodo è più leggibile; per molti, la seconda strada con una tabella pivot è imbattibile.

Le ore decimali servono anche per la busta paga?

Sì: il consulente del lavoro ragiona in ore e centesimi, non in formato orario. Le ore decimali (ottenute con il *24) sono il dato che gli passi, già pronto per essere moltiplicato per la tariffa e per separare ordinarie e straordinari.

Una volta capito che Excel vede le ore come frazioni di giorno, tutti i calcoli (turni notturni, pause, paghe) diventano gestibili con poche formule. Il segreto è ricordare due cose: il formato [h]:mm per le somme e la moltiplicazione per 24 per passare ai decimali. Il foglio delle ore lavorate smette così di essere fonte di discussioni e diventa un conteggio limpido, su cui dipendenti e datore di lavoro possono fidarsi.

Francesca Galli
Scritto da
Francesca Galli
Redattrice esperta di Excel e produttività

Francesca Galli è redattrice e formatrice specializzata in Excel e produttività per il lavoro. Dopo anni passati a tradurre procedure complesse in istruzioni semplici per uffici amministrativi e studi professionali, oggi cura le guide di Excel Gestione: spiega passo dopo passo come usare ogni modello, cosa inserire e come interpretare i risultati, senza dare nulla per scontato.