Calcolatore Giorni Tra Due Date in Excel
Risultato del Calcolo
Guida Completa: Come Calcolare i Giorni Tra Due Date in Excel
Excel offre diverse funzioni per calcolare la differenza tra due date, ognuna con specifiche caratteristiche che la rendono adatta a diversi scenari. Questa guida approfondita ti mostrerà come utilizzare ciascuna funzione, con esempi pratici e consigli per scegliere quella più adatta alle tue esigenze.
1. La Funzione GIORNI: Il Metodo Più Semplice
La funzione GIORNI (DAY in inglese) è la più semplice per calcolare la differenza tra due date. Restituisce semplicemente il numero di giorni tra due date, senza considerare formati particolari o giorni festivi.
Sintassi:
=GIORNI(data_fine; data_inizio)
Esempio: Se vuoi calcolare i giorni tra il 15/01/2023 e il 30/01/2023:
=GIORNI("30/01/2023"; "15/01/2023")
Risultato: 15 giorni
2. La Funzione GIORNI360: Il Metodo Contabile
La funzione GIORNI360 (DAYS360 in inglese) è specificamente progettata per calcoli finanziari e contabili. Assume che ogni mese abbia 30 giorni e che un anno abbia 360 giorni, semplificando i calcoli degli interessi.
Sintassi:
=GIORNI360(data_inizio; data_fine; [metodo])
Parametri:
- data_inizio: La data di inizio
- data_fine: La data di fine
- metodo (opzionale): Specificare FALSE (o 0) per il metodo europeo (inizio=30 se è l’ultimo giorno del mese), TRUE (o 1) per il metodo americano (inizio=30 se è il 31° giorno del mese)
Esempio: Calcolo tra il 31/01/2023 e il 28/02/2023 con metodo europeo:
=GIORNI360("31/01/2023"; "28/02/2023"; FALSE)
Risultato: 28 giorni (30-31 + 28)
3. La Funzione DATA.DIFF: La Più Flessibile
La funzione DATA.DIFF (DATEDIF in inglese) è una funzione “nascosta” in Excel che offre la massima flessibilità nel calcolare la differenza tra date. Può restituire la differenza in giorni, mesi o anni.
Sintassi:
=DATA.DIFF(data_inizio; data_fine; unità)
Parametri per l’unità:
- “D”: Differenza in giorni
- “M”: Differenza in mesi completi
- “Y”: Differenza in anni completi
- “YM”: Mesi rimanenti dopo anni completi
- “MD”: Giorni rimanenti dopo mesi completi
- “YD”: Giorni rimanenti dopo anni completi
Esempi:
=DATA.DIFF("15/01/2020"; "30/06/2023"; "D") → 1261 giorni
=DATA.DIFF("15/01/2020"; "30/06/2023"; "Y") → 3 anni
=DATA.DIFF("15/01/2020"; "30/06/2023"; "YM") → 5 mesi
=DATA.DIFF("15/01/2020"; "30/06/2023"; "MD") → 15 giorni
4. La Funzione GIORNI.LAVORATIVI: Escludere Weekend e Festivi
La funzione GIORNI.LAVORATIVI (NETWORKDAYS in inglese) è essenziale per calcolare i giorni lavorativi tra due date, escludendo automaticamente sabati e domeniche. Può anche escludere giorni festivi specifici.
Sintassi:
=GIORNI.LAVORATIVI(data_inizio; data_fine; [festivi])
Esempio: Calcolare i giorni lavorativi tra il 01/01/2023 e il 31/01/2023, escludendo il 6 gennaio (Epifania):
=GIORNI.LAVORATIVI("01/01/2023"; "31/01/2023"; {"01/01/2023"; "06/01/2023"})
Risultato: 21 giorni lavorativi (23 giorni totali – 2 festivi – 4 weekend)
5. Confronto Tra le Funzioni Excel per il Calcolo dei Giorni
| Funzione | Scopo Principale | Include Data Fine? | Considera Anni Bisestili? | Esclude Weekend? | Esclude Festivi? | Precisone |
|---|---|---|---|---|---|---|
| GIORNI | Differenza semplice in giorni | No | Sì | No | No | Giorni calendariali esatti |
| GIORNI360 | Calcoli finanziari/contabili | No | No (360 giorni/anno) | No | No | Approssimata (30 giorni/mese) |
| DATA.DIFF | Differenza flessibile (giorni, mesi, anni) | Configurabile | Sì | No | No | Giorni calendariali esatti |
| GIORNI.LAVORATIVI | Giorni lavorativi (esclude weekend) | No | Sì | Sì | Sì (opzionale) | Giorni lavorativi esatti |
6. Errori Comuni e Come Evitarli
Quando si lavorano con le date in Excel, è facile incorrere in errori. Ecco i più comuni e come evitarli:
-
Formato delle celle non corretto:
Assicurati che le celle contenenti date siano formattate come “Data”. Se Excel interpreta una data come testo, le funzioni non funzioneranno correttamente.
Soluzione: Seleziona la cella → Formato Celle → Categoria “Data”.
-
Date inserite come testo:
Se digiti “01/02/2023” in una cella formattata come testo, Excel la tratterà come una stringa invece che come una data.
Soluzione: Usa la funzione DATA.VALORE per convertire il testo in data:
=DATA.VALORE("01/02/2023") -
Ordine errato degli argomenti:
Molte funzioni richiedono che la data di inizio sia il primo argomento e la data di fine il secondo. Invertirle restituirà un numero negativo.
Soluzione: Controlla sempre l’ordine: =GIORNI(data_fine; data_inizio).
-
Differenze tra sistemi 1900 e 1904:
Excel per Windows usa il sistema di data 1900, mentre Excel per Mac può usare il 1904. Questo può causare discrepanze di 4 anni nei calcoli.
Soluzione: Vai su Preferenze → Calcolo → Seleziona “Sistema data 1900”.
-
Fusi orari non considerati:
Excel non gestisce automaticamente i fusi orari. Se lavori con date da diverse zone, devi convertire manualmente le ore.
Soluzione: Usa la funzione ORA per aggiustare le differenze:
=data + (ore/24)
7. Caso Pratico: Calcolare l’Età in Anni, Mesi e Giorni
Un’applicazione comune è calcolare l’età di una persona in anni, mesi e giorni. Ecco come fare con DATA.DIFF:
=DATA.DIFF(B2; OGGI(); "Y") & " anni, " & DATA.DIFF(B2; OGGI(); "YM") & " mesi, e " & DATA.DIFF(B2; OGGI(); "MD") & " giorni"
Dove B2 contiene la data di nascita.
Risultato esempio: “25 anni, 3 mesi, e 14 giorni”
8. Calcolare i Giorni tra Due Date in Diversi Formati
A volte potrebbe essere necessario presentare il risultato in formati diversi. Ecco alcuni esempi utili:
| Formato Desiderato | Formula Excel | Esempio (01/01/2023 – 15/03/2023) |
|---|---|---|
| Giorni totali | =GIORNI(“15/03/2023”; “01/01/2023”) | 73 giorni |
| Settimane e giorni | =QUOZIENTE(GIORNI(“15/03/2023”; “01/01/2023″);7) & ” settimane e ” & RESTO(GIORNI(“15/03/2023”; “01/01/2023″);7) & ” giorni” | 10 settimane e 3 giorni |
| Mesi e giorni | =DATA.DIFF(“01/01/2023”; “15/03/2023”; “M”) & ” mesi e ” & DATA.DIFF(“01/01/2023”; “15/03/2023”; “MD”) & ” giorni” | 2 mesi e 14 giorni |
| Anni, mesi e giorni | =DATA.DIFF(“01/01/2023”; “15/03/2023”; “Y”) & ” anni, ” & DATA.DIFF(“01/01/2023”; “15/03/2023”; “YM”) & ” mesi, e ” & DATA.DIFF(“01/01/2023”; “15/03/2023”; “MD”) & ” giorni” | 0 anni, 2 mesi, e 14 giorni |
| Giorni lavorativi (escl. weekend) | =GIORNI.LAVORATIVI(“01/01/2023”; “15/03/2023”) | 51 giorni lavorativi |
| Percentuale dell’anno | =GIORNI(“15/03/2023”; “01/01/2023”)/365 | 20.00% (arrotondato) |
9. Automazione con Tabelle Pivot e Grafici
Puoi utilizzare le differenze tra date per creare analisi avanzate con Tabelle Pivot e grafici. Ecco un esempio pratico:
- Crea una tabella con colonne: ID Progetto, Data Inizio, Data Fine.
- Aggiungi una colonna calcolata per la durata:
=GIORNI([Data Fine]; [Data Inizio])
- Crea una Tabella Pivot con:
- Righe: Intervalli di durata (es: 0-30 giorni, 31-60 giorni, etc.)
- Valori: Contea di ID Progetto
- Inserisci un Grafico a Istogramma per visualizzare la distribuzione delle durate.
Questo ti permetterà di analizzare quanto tempo mediamente richiedono i tuoi progetti e identificare eventuali outliers.
10. Integrazione con Power Query per Analisi Avanzate
Per dataset più complessi, Power Query offre funzionalità avanzate per manipolare le date:
- Importa i tuoi dati in Power Query (Dati → Ottieni Dati).
- Seleziona la colonna con la data e usa Aggiungi Colonna → Data → Differenza per calcolare la differenza con un’altra data.
- Puoi estrarre automaticamente:
- Giorni totali
- Anni completi
- Mesi completi
- Giorni rimanenti
- Carica i risultati in Excel per ulteriori analisi.
Power Query è particolarmente utile quando devi pulire dati con formati di data inconsistenti o quando lavori con grandi dataset.
11. Funzioni Avanzate: GIORNI.LAVORATIVI.INTL
La funzione GIORNI.LAVORATIVI.INTL (NETWORKDAYS.INTL) estende GIORNI.LAVORATIVI permettendo di definire quali giorni della settimana sono considerati weekend.
Sintassi:
=GIORNI.LAVORATIVI.INTL(data_inizio; data_fine; [weekend]; [festivi])
Parametri per [weekend]:
- 1 o omesso: Sabato e Domenica (default)
- 2: Domenica e Lunedì
- 11: Solo Domenica
- 12: Solo Lunedì
- 13: Solo Martedì
- …
- 17: Solo Sabato
- Puoi anche usare una stringa di 7 caratteri dove “0” è giorno lavorativo e “1” è weekend. Es: “0000011” per weekend Sabato-Domenica.
Esempio: Calcolare giorni lavorativi tra il 01/01/2023 e il 31/01/2023 con weekend Venerdì-Sabato (come in alcuni paesi mediorientali):
=GIORNI.LAVORATIVI.INTL("01/01/2023"; "31/01/2023"; 7)
Dove 7 corrisponde a Venerdì-Sabato come weekend.
12. Best Practice per Lavorare con le Date in Excel
Segui queste best practice per evitare errori e massimizzare l’efficienza:
-
Usa sempre il formato data standard:
GG/MM/AAAA per l’Italia. Evita formati ambigui come MM/GG/AAAA che possono causare confusioni.
-
Congela le date di riferimento:
Quando usi una data in una formula che non deve cambiare (come una data di inizio progetto), usa il riferimento assoluto con $:
=GIORNI(B2; $A$1)
-
Documenta le tue formule:
Aggiungi commenti alle celle complesse (Recensione → Nuovo Commento) per spiegare la logica, soprattutto se altri utenti utilizzeranno il tuo file.
-
Valida sempre i dati:
Usa la Convalida Dati (Dati → Convalida Dati) per assicurarti che le celle contengano solo date valide.
-
Testa con date limite:
Prova le tue formule con:
- Date uguali (differenza = 0)
- Date invertite (dovrebbe dare errore o valore negativo)
- Date che includono anni bisestili (es: 28/02/2020 – 01/03/2020)
- Date che attraversano la fine dell’anno
-
Considera i fusi orari per dati internazionali:
Se lavori con team globalizzati, assicurati che tutte le date siano normalizzate a un fuso orario di riferimento (es: UTC).
-
Usa nomi descrittivi:
Assegna nomi alle celle o agli intervalli (Formule → Definisci Nome) per rendere le formule più leggibili:
=GIORNI(DataFine; DataInizio)
13. Errori di Excel con le Date e Come Risolverli
Excel può restituire diversi tipi di errori quando si lavorano con le date. Ecco i più comuni e come risolverli:
| Errore | Causa Probabile | Soluzione |
|---|---|---|
| #VALORE! | Una o entrambe le date non sono riconosciute come date valide (potrebbero essere testo). |
|
| #NUM! | La data è fuori dall’intervallo supportato da Excel (prima del 01/01/1900 o dopo il 31/12/9999). |
|
| #NOME? | Il nome della funzione è digitato erroneamente (es: “GIORN” invece di “GIORNI”). |
|
| #DIV/0! | Stai dividendo per zero, probabilmente perché la differenza è zero (date uguali). |
|
| Risultato negativo | La data di inizio è successiva alla data di fine. |
|
| Risultato inatteso con GIORNI360 | Il metodo contabile (360 giorni/anno) può dare risultati diversi dal calendario reale. |
|
14. Alternative a Excel: Google Sheets e Python
Se Excel non soddisfa le tue esigenze, considera queste alternative:
Google Sheets
Google Sheets offre funzioni simili a Excel, con il vantaggio della collaborazione in tempo reale:
=DAYS(end_date, start_date) // Equivalente a GIORNI
=DATEDIF(start_date, end_date, "D") // Equivalente a DATA.DIFF
=NETWORKDAYS(start_date, end_date) // Equivalente a GIORNI.LAVORATIVI
Python con Pandas
Per analisi più avanzate, Python offre grande flessibilità:
import pandas as pd
start = pd.to_datetime("2023-01-01")
end = pd.to_datetime("2023-01-31")
days_diff = (end - start).days
print(f"Differenza: {days_diff} giorni")
Vantaggi di Python:
- Gestione avanzata dei fusi orari con pytz.
- Calcoli con array di date (es: differenza tra migliaia di coppie di date in una sola operazione).
- Integrazione con librerie di machine learning per previsioni temporali.
15. Domande Frequenti
D: Perché Excel mostra ###### invece della data?
R: Questo accade quando la colonna è troppo stretta per visualizzare la data. Allarga la colonna o riduci la dimensione del font. In alternativa, la cella potrebbe contenere una data negativa (prima del 1900), che Excel non gestisce.
D: Come calcolare la differenza tra date includendo l’orario?
R: Usa una semplice sottrazione tra le celle con data e ora. Excel gestisce automaticamente il calcolo:
=B2-A2
Formatta il risultato come [h]:mm:ss per vedere le ore totali, o gg hh:mm:ss per giorni + ore.
D: Posso calcolare la differenza tra date in ore o minuti?
R: Sì, moltiplica la differenza in giorni per 24 (ore) o 1440 (minuti):
=GIORNI(B2;A2)*24 // Differenza in ore
=GIORNI(B2;A2)*1440 // Differenza in minuti
D: Come gestire i giorni festivi variabili (es: Pasqua)?
R: Per giorni festivi che cambiano ogni anno (come Pasqua o Lunedì di Pasqua), puoi:
- Creare una tabella con le date esatte per ogni anno.
- Usare una formula per calcolare la Pasqua (complessa, ma possibile).
- Utilizzare un add-in come “Holiday List” che aggiorna automaticamente i festivi.
D: Perché DATA.DIFF non appare nell’elenco delle funzioni?
R: DATA.DIFF è una funzione “nascosta” per compatibilità con Lotus 1-2-3. Non appare nell’elenco delle funzioni, ma puoi digitarla manualmente e funzionerà correttamente.
D: Come calcolare l’età in anni compiuti?
R: Usa questa formula:
=SE(MESE(OGGI())>MESE(B2); ANNO(OGGI())-ANNO(B2); SE(MESE(OGGI())=MESE(B2); SE(GIORNO(OGGI())>=GIORNO(B2); ANNO(OGGI())-ANNO(B2); ANNO(OGGI())-ANNO(B2)-1); ANNO(OGGI())-ANNO(B2)-1))
Dove B2 contiene la data di nascita.
16. Risorse Utili
Per approfondire: