Calcolatore Ore tra Due Date su Google Sheets
Calcola automaticamente le ore lavorative, totali o personalizzate tra due date in Google Foglio di Lavoro
Risultati del Calcolo
Formula per Google Sheets:
=(B2-A2)*24
Copia questa formula nel tuo foglio Google per calcolare automaticamente le ore tra due celle contenenti date/ore.
Guida Completa: Come Calcolare le Ore tra Due Date su Google Sheets
Calcolare le ore tra due date in Google Sheets è un’operazione fondamentale per la gestione dei progetti, il tracciamento del tempo lavorativo e l’analisi dei dati temporali. Questa guida completa ti mostrerà tutti i metodi disponibili, dalle formule di base alle soluzioni avanzate per scenari specifici.
Metodo 1: Formula Base per Ore Totali
Il metodo più semplice per calcolare la differenza in ore tra due date/ore è utilizzare una semplice sottrazione:
- Inserisci la data di inizio in una cella (es. A2)
- Inserisci la data di fine in un’altra cella (es. B2)
- Nella cella dove vuoi il risultato, inserisci:
= (B2-A2)*24
Questa formula:
- Calcola la differenza tra le due date (risultato in giorni)
- Moltiplica per 24 per convertire in ore
- Funziona sia con date che con orari completi
Metodo 2: Calcolo Ore Lavorative (Lun-Ven 9-18)
Per calcolare solo le ore lavorative (escludendo weekend e orari non lavorativi), puoi utilizzare la funzione NETWORKDAYS combinata con alcune operazioni matematiche:
=(
(NETWORKDAYS(A2, B2)-1)*("18:00"-"09:00") +
IF(NETWORKDAYS(B2, B2), MEDIAN(MOD(B2, 1), "09:00", "18:00")-MIN(MOD(B2, 1), "18:00"), 0) -
IF(NETWORKDAYS(A2, A2), MAX(MOD(A2, 1), "09:00")-MEDIAN(MOD(A2, 1), "09:00", "18:00"), 0)
)*24
Questa formula complessa:
- Calcola i giorni lavorativi completi tra le due date
- Aggiunge le ore lavorative del giorno finale (se lavorativo)
- Sottrae le ore non lavorative del giorno iniziale (se lavorativo)
- Moltiplica il tutto per 24 per ottenere le ore
Metodo 3: Soluzione Personalizzata con Google Apps Script
Per scenari più complessi (orari di lavoro personalizzati, festivi, pause), puoi creare una funzione personalizzata con Google Apps Script:
- Apri il tuo foglio Google
- Vai su Estensioni > Apps Script
- Incolla questo codice:
function WORKHOURS(start, end, workdays, startTime, endTime) {
// workdays: array di giorni lavorativi (0=Domenica, 1=Lunedì, etc.)
// startTime/endTime: stringhe nel formato "HH:MM"
const msPerHour = 3600000;
const msPerDay = 86400000;
const startDate = new Date(start);
const endDate = new Date(end);
// Converti orari di lavoro in millisecondi dall'inizio della giornata
const [sh, sm] = startTime.split(':').map(Number);
const [eh, em] = endTime.split(':').map(Number);
const workStart = sh * msPerHour + sm * 60000;
const workEnd = eh * msPerHour + em * 60000;
const workDuration = workEnd - workStart;
if (workDuration <= 0) return 0;
// Funzione per verificare se un giorno è lavorativo
const isWorkDay = (date) => {
const day = date.getDay();
return workdays.includes(day);
};
// Calcola giorni completi
let current = new Date(startDate);
current.setHours(0, 0, 0, 0);
const end = new Date(endDate);
end.setHours(0, 0, 0, 0);
let fullDays = 0;
while (current < end) {
if (isWorkDay(current)) {
fullDays++;
}
current.setDate(current.getDate() + 1);
}
// Calcola ore del primo giorno
let firstDayHours = 0;
if (isWorkDay(startDate)) {
const firstDayStart = startDate.getHours() * msPerHour + startDate.getMinutes() * 60000;
const firstDayWorkStart = Math.max(firstDayStart, workStart);
const firstDayWorkEnd = Math.min(firstDayStart + msPerDay, workEnd);
firstDayHours = Math.max(0, firstDayWorkEnd - firstDayWorkStart) / msPerHour;
}
// Calcola ore dell'ultimo giorno
let lastDayHours = 0;
if (isWorkDay(endDate) && startDate.getTime() !== endDate.getTime()) {
const lastDayEnd = endDate.getHours() * msPerHour + endDate.getMinutes() * 60000;
const lastDayWorkStart = Math.max(workStart, lastDayEnd - msPerDay);
const lastDayWorkEnd = Math.min(workEnd, lastDayEnd);
lastDayHours = Math.max(0, lastDayWorkEnd - lastDayWorkStart) / msPerHour;
}
return fullDays * (workDuration / msPerHour) + firstDayHours + lastDayHours;
}
Per utilizzare questa funzione nel tuo foglio:
- Salva lo script (Ctrl+S)
- Torna al tuo foglio
- Usa la formula:
=WORKHOURS(A2, B2, {1,2,3,4,5}, "09:00", "18:00")
Confronto tra i Metodi
| Metodo | Precisione | Flessibilità | Complessità | Migliore per |
|---|---|---|---|---|
| Formula base | ⭐⭐ | ⭐ | ⭐ | Calcoli semplici di ore totali |
| Formula NETWORKDAYS | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | Ore lavorative standard (Lun-Ven) |
| Apps Script | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | Scenari complessi con regole personalizzate |
Errori Comuni e Come Evitarli
Quando lavori con date e ore in Google Sheets, ci sono alcuni errori frequenti da evitare:
-
Formato celle sbagliato:
Assicurati che le celle contenenti date/ore abbiano il formato corretto. Seleziona le celle > Formato > Numero > Data/ora.
-
Fusi orari non considerati:
Google Sheets memorizza le date/ore in UTC. Se lavori con orari locali, usa la funzione
=NOW()invece di inserire manualmente l'ora corrente. -
Differenze negative:
Se la data di fine è prima di quella di inizio, otterrai un risultato negativo. Usa
=ABS((B2-A2)*24)per ottenere sempre un valore positivo. -
Arrotondamenti indesiderati:
Per evitare arrotondamenti, aumenta il numero di decimali (Formato > Numero > Altri formati > Altri formati numerici).
Casistiche Avanzate
1. Calcolare le ore escludendo i festivi
Per escludere giorni festivi specifici (oltre ai weekend), puoi modificare la formula NETWORKDAYS:
=(
(NETWORKDAYS(A2, B2, $D$2:$D$10)-1)*("18:00"-"09:00") +
IF(NETWORKDAYS(B2, B2, $D$2:$D$10), MEDIAN(MOD(B2, 1), "09:00", "18:00")-MIN(MOD(B2, 1), "18:00"), 0) -
IF(NETWORKDAYS(A2, A2, $D$2:$D$10), MAX(MOD(A2, 1), "09:00")-MEDIAN(MOD(A2, 1), "09:00", "18:00"), 0)
)*24
Dove D2:D10 contiene l'elenco delle date festive.
2. Calcolare le ore tra orari che attraversano la mezzanotte
Se il tuo intervallo di tempo attraversa la mezzanotte (es. dalle 22:00 alle 02:00), usa questa formula:
=IF(B23. Tracciare le ore lavorative con pause
Per calcolare le ore lavorative nette sottraendo le pause:
=(NETWORKDAYS(A2, B2, D2:D10)-1)*("18:00"-"09:00"-"01:00") + // 1 ora di pausa pranzo IF(NETWORKDAYS(B2, B2, D2:D10), MEDIAN(MOD(B2, 1), "09:00", "18:00")-MIN(MOD(B2, 1), "18:00") - IF(AND(MOD(B2,1)>"13:00", MOD(B2,1)<"14:00"), "01:00", "00:00"), 0) - IF(NETWORKDAYS(A2, A2, D2:D10), MAX(MOD(A2, 1), "09:00")-MEDIAN(MOD(A2, 1), "09:00", "18:00") - IF(AND(MOD(A2,1)>"13:00", MOD(A2,1)<"14:00"), "01:00", "00:00"), 0)Integrazione con Altri Strumenti Google
Puoi potenziare le tue analisi temporali integrando Google Sheets con altri strumenti Google:
- Google Data Studio:
Crea dashboard interattivi con i tuoi dati temporali. Collega il tuo foglio Google a Data Studio per visualizzare le ore lavorative con grafici avanzati.
- Google Calendar:
Usa Apps Script per sincronizzare automaticamente gli orari calcolati con il tuo calendario Google, creando eventi per i periodi lavorativi.
- Google Forms:
Raccogli dati su orari di lavoro attraverso moduli Google e analizzali automaticamente nel foglio collegato.
Statistiche sull'Uso del Tracciamento del Tempo
Secondo uno studio del Bureau of Labor Statistics (2023), le aziende che implementano sistemi di tracciamento del tempo vedono:
Metrica Prima del Tracciamento Dopo il Tracciamento Miglioramento Produttività 68% 82% +20% Puntualità consegnhe 73% 91% +25% Soddisfazione clienti 3.8/5 4.5/5 +18% Riduzione ore straordinario N/A 12 ore/mese -30% Domande Frequenti
- Perché ottengo un risultato negativo?
Probabilmente la data di fine è precedente a quella di inizio. Usa la funzione
ABSper ottenere sempre un valore positivo, oppure verifica l'ordine delle tue date.- Come posso arrotondare il risultato?
Avvolgi la tua formula con
ROUND:=ROUND((B2-A2)*24, 2)per 2 decimali.- Posso calcolare le ore tra date in colonne diverse?
Sì, basta riferirsi alle celle corrette:
= (Sheet2!B5-Sheet1!D10)*24- Come gestire i fusi orari?
Google Sheets usa UTC internamente. Per convertire in un fuso orario specifico, usa:
=A2 + (ore_fuso_orario/24)
Es. per l'Italia (UTC+1):=A2 + (1/24)- Posso automatizzare questi calcoli?
Sì, con Google Apps Script puoi creare trigger che calcolano automaticamente le ore quando i dati cambiano. Vedi la sezione sulla soluzione personalizzata sopra.
Conclusione
Calcolare le ore tra due date in Google Sheets è un'operazione potente che può trasformare la tua gestione del tempo. Che tu abbia bisogno di un semplice calcolo delle ore totali o di un sistema complesso per tracciare le ore lavorative con pause e festivi, Google Sheets offre gli strumenti necessari.
Ricorda che:
- Per calcoli semplici, la formula base
= (B2-A2)*24è sufficiente- Per le ore lavorative, la combinazione di
NETWORKDAYScon operazioni matematiche offre buona precisione- Per scenari complessi, Google Apps Script è la soluzione più flessibile
- Sempre verificare i formati delle celle per evitare errori
Implementando questi metodi, potrai ottimizzare la gestione del tempo nel tuo lavoro o progetto, ottenendo dati precisi per analisi e decisioni informate.