Calcolatore Giorni Tra Due Date in Excel
Utilizza questo strumento professionale per calcolare precisamente i giorni tra due date, includendo opzioni per giorni lavorativi, festivi e personalizzazione avanzata. Ottieni risultati immediati con visualizzazione grafica integrata.
Risultati del Calcolo
Guida Completa: Come Calcolare i Giorni Tra Due Date in Excel
Il calcolo dei giorni tra due date è un’operazione fondamentale in Excel, utilizzata in contabilità, gestione progetti, risorse umane e analisi temporali. Questa guida approfondita ti mostrerà tutti i metodi disponibili, dalle funzioni di base alle tecniche avanzate per gestire giorni lavorativi, festivi e periodi personalizzati.
Metodi Base per Calcolare i Giorni in Excel
-
Sottrazione Diretta
Il metodo più semplice consiste nella sottrazione diretta tra due date:=B2-A2
Dove A2 contiene la data di inizio e B2 la data di fine.
Nota: Excel memorizza le date come numeri seriali (1 = 1/1/1900). -
Funzione GIORNI
Introduotta in Excel 2013, la funzioneGIORNIsemplifica il calcolo:=GIORNI(data_fine; data_inizio)
Esempio:=GIORNI("15/03/2023"; "01/01/2023")restituisce 73. -
Funzione GIORNI360
Utilizzata in contabilità per calcolare giorni su base annuale (360 giorni):=GIORNI360(data_inizio; data_fine; [metodo])
Il parametrometodopuò essere:FALSEo omesso: Metodo US (NASD) – 30/360TRUE: Metodo europeo – 30/360
Calcolo Avanzato: Giorni Lavorativi e Festivi
Per escludere sabati, domeniche e festivi, Excel offre funzioni specializzate:
| Funzione | Descrizione | Sintassi | Esempio |
|---|---|---|---|
GIORNI.LAVORATIVI.TOT |
Calcola giorni lavorativi tra due date, escludendo weekend e festivi specificati | =GIORNI.LAVORATIVI.TOT(data_inizio; data_fine; [festivi]) |
=GIORNI.LAVORATIVI.TOT("01/01/2023"; "31/01/2023"; A2:A5) |
GIORNI.LAVORATIVI.INTL |
Versione internazionale che permette di definire quali giorni sono weekend | =GIORNI.LAVORATIVI.INTL(data_inizio; data_fine; [weekend]; [festivi]) |
=GIORNI.LAVORATIVI.INTL("01/01/2023"; "31/01/2023"; 11; A2:A5) |
GIORNO.SETTIMANA |
Restituisce il giorno della settimana (1=domenica, 2=lunedì, ecc.) | =GIORNO.SETTIMANA(data; [tipo_restituzione]) |
=GIORNO.SETTIMANA("15/03/2023"; 2) → 3 (mercoledì) |
Codici weekend per GIORNI.LAVORATIVI.INTL:
1o omesso: Sabato e Domenica2: Domenica e Lunedì11: Solo Domenica12: Solo Sabato13: Venerdì e Sabato14: Venerdì e Domenica15: Sabato e Lunedì
Gestione dei Festivi in Excel
Per gestire correttamente i giorni festivi, è necessario:
-
Creare un elenco di festivi
Inserisci tutte le date festive in un intervallo (es.A2:A20). Puoi utilizzare questa formula per generare automaticamente i festivi ricorrenti:=DATA(ANNO(data_riferimento); 1; 1) ' Capodanno =DATA(ANNO(data_riferimento); 12; 25) ' Natale =DATA(ANNO(data_riferimento); 12; 26) ' Santo Stefano
-
Utilizzare funzioni condizionali
CombinaGIORNI.LAVORATIVIconSEper logiche complesse:=SE(GIORNI.LAVORATIVI.TOT(A2; B2; Festivi!A:A) > 10; "Progetto lungo"; "Progetto breve")
-
Gestire festivi mobili
Per festivi come Pasqua (data variabile), utilizza questa formula:' Formula per calcolare la Pasqua (algoritmo di Butcher-Meeus) =DATA(ANNO; 3; 15 + INT((ANNO - 1900) * 19 + 15) / 30) - GIORNO.SETTIMANA(DATA(ANNO; 3; 15 + INT((ANNO - 1900) * 19 + 15) / 30); 1) + 7
Confronti Pratici tra Metodi di Calcolo
| Scenario | Sottrazione Diretta | Funzione GIORNI | GIORNI.LAVORATIVI.TOT | GIORNI.LAVORATIVI.INTL |
|---|---|---|---|---|
| Date: 01/01/2023 – 10/01/2023 (9 giorni totali, 7 lavorativi) |
9 | 9 | 7 (escludendo 01/01 e weekend) | 7 (stesso risultato) |
| Date: 24/12/2023 – 02/01/2024 (10 giorni totali, 3 lavorativi) |
10 | 10 | 3 (escludendo 25-26/12, 01/01 e weekend) | 3 (stesso risultato) |
| Date: 01/04/2023 – 30/04/2023 (30 giorni totali, 22 lavorativi) |
30 | 30 | 22 (escludendo 25/04, 01/05 e weekend) | 22 (stesso risultato) |
| Date: 01/08/2023 – 15/08/2023 (15 giorni totali, 11 lavorativi) |
15 | 15 | 11 (escludendo 15/08 e weekend) | 11 (stesso risultato) |
Osservazioni:
- La sottrazione diretta e
GIORNIdanno sempre lo stesso risultato. GIORNI.LAVORATIVI.TOTesclude automaticamente sabati e domeniche oltre ai festivi specificati.- Per periodi che includono molti festivi (es. Natale/Capodanno), la differenza tra giorni totali e lavorativi può essere significativa.
- In Italia, i giorni festivi infrasettimanali riducono mediamente del 20-25% i giorni lavorativi in un mese.
Errori Comuni e Soluzioni
-
Errore #NUM!
Causa: Data di fine precedente alla data di inizio.
Soluzione: UtilizzaSEERROREoSEper gestire l’errore:=SE(A2 > B2; "Data fine precedente"; GIORNI(B2; A2))
-
Risultati Negativi
Causa: Formato celle non riconosciuto come data.
Soluzione: Verifica il formato conÈ.NUMERO:=SE(NON(È.NUMERO(A2)); "Formato errato"; GIORNI(B2; A2))
-
Festivi Non Riconosciuti
Causa: Formato date non coerente nell’elenco festivi.
Soluzione: Standardizza il formato conDATA.VALORE:=DATA.VALORE("25/12/" & ANNO(A2)) -
Differenze tra Excel e Calendario
Causa: Excel considera il 1900 come anno bisestile (bug storico).
Soluzione: Per date precedenti al 1900, usa il modalità data 1904:- Vai su File → Opzioni → Avanzate
- Seleziona “Utilizza sistema data 1904”
- Riavvia Excel
Automazione con VBA (Visual Basic for Applications)
Per operazioni ricorrenti, puoi creare una funzione personalizzata in VBA:
Function GiorniLavorativiPersonalizzati(DataInizio As Date, DataFine As Date, Optional Festivi As Range) As Long
Dim Giorni As Long
Dim DataCorrente As Date
Dim GiornoSettimana As Integer
Giorni = 0
DataCorrente = DataInizio
Do While DataCorrente <= DataFine
GiornoSettimana = Weekday(DataCorrente, vbMonday)
' Esclude sabato (6) e domenica (7)
If GiornoSettimana < 6 Then
' Verifica se è un festivo
If Not Festivi Is Nothing Then
Dim Festivo As Range
Dim TrovaFestivo As Range
Dim DataFestivo As Date
For Each Festivo In Festivi
If IsDate(Festivo.Value) Then
DataFestivo = CDate(Festivo.Value)
If DateValue(DataFestivo) = DateValue(DataCorrente) Then
GoTo ProssimoGiorno
End If
End If
Next Festivo
End If
Giorni = Giorni + 1
End If
ProssimoGiorno:
DataCorrente = DataCorrente + 1
Loop
GiorniLavorativiPersonalizzati = Giorni
End Function
Come utilizzare la funzione:
- Premi ALT + F11 per aprire l'editor VBA
- Vai su Inserisci → Modulo
- Incolla il codice sopra
- Chiudi l'editor
- Ora puoi usare
=GiorniLavorativiPersonalizzati(A2; B2; Festivi!A:A)
Integrazione con Power Query
Per analisi avanzate su grandi dataset:
-
Importa i dati
Vai su Dati → Ottieni dati → Da tabella/intervallo -
Aggiungi una colonna personalizzata
Usa questa formula M per calcolare i giorni:= Duration.Days([DataFine] - [DataInizio]) + 1
-
Filtra i giorni lavorativi
Aggiungi un passaggio per escludere weekend:= Table.SelectRows(#"PassaggioPrecedente", each Date.DayOfWeek([Data]) <> 6 and Date.DayOfWeek([Data]) <> 0)
-
Unisci con l'elenco festivi
Esegui un join left anti per escludere i festivi:= Table.NestedJoin(#"GiorniLavorativi", "Data", Festivi, "DataFestivo", "Festivi", JoinKind.LeftAnti)
Best Practice per la Gestione delle Date in Excel
-
Standardizza i formati
Utilizza sempre il formatoGG/MM/AAAAoAAAA-MM-GG(ISO 8601) per evitare ambiguità. Evita formati comeMM/GG/AAAAche possono causare confusioni tra giorno e mese. -
Valida i dati in ingresso
Applica la convalida dati per assicurarti che le celle contengano solo date:- Seleziona l'intervallo di celle
- Vai su Dati → Convalida dati
- Scegli "Data" come criterio
- Imposta intervallo (es. tra 01/01/2000 e 31/12/2050)
-
Documenta le formule
Aggiungi commenti alle celle complesse:- Fai clic destro sulla cella
- Seleziona "Inserisci commento"
- Spiega la logica (es: "Calcola giorni lavorativi escludendo festivi in Festivi!A:A")
-
Gestisci i fusorari
Per progetti internazionali, considera i fusi orari con:=DATA(ANNO(A2); MESE(A2); GIORNO(A2) + (FusoOrario/24))
DoveFusoOrarioè la differenza in ore (es. +1 per CET, -5 per EST). -
Ottimizza le prestazioni
Per cartelle con molte formule:- Evita riferimenti volatili come
OGGI()oORA()in grandi intervalli - Usa
Calcolo manuale(in Formule → Opzioni di calcolo) durante la modifica - Sostituisci formule complesse con valori statici quando possibile
- Evita riferimenti volatili come
Casi Pratici e Soluzioni
| Scenario | Problema | Soluzione Excel | Formula Esempio |
|---|---|---|---|
| Calcolo scadenze contrattuali | Determinare la data di scadenza aggiungendo 90 giorni lavorativi | Combinare GIORNO.LAVORATIVO.TOT con DATA |
=GIORNO.LAVORATIVO.TOT(A2; 90; Festivi!A:A) |
| Pianificazione progetti | Calcolare la durata in settimane lavorative | Dividere i giorni lavorativi per 5 | =GIORNI.LAVORATIVI.TOT(A2; B2) / 5 |
| Gestione magazzino | Determinare la data di consegna entro 5 giorni lavorativi | Usare GIORNO.LAVORATIVO |
=GIORNO.LAVORATIVO(A2; 5; Festivi!A:A) |
| Risorse umane | Calcolare le ferie residue (26 giorni/anno) | Sottrare giorni di ferie usati dai giorni spettanti | =26 - CONTA.SE(Ferie!A:A; "<=" & OGGI()) |
| Analisi finanziaria | Calcolare interessi su base 360 giorni | Utilizzare GIORNI360 con metodo europeo |
=GIORNI360(A2; B2; VERO) * (Tasso/100) |
Alternative a Excel per il Calcolo delle Date
Mentre Excel è lo strumento più diffuso, esistono alternative specializzate:
-
Google Sheets
Offre funzioni simili con la vantaggio della collaborazione in tempo reale:=DAYS(B2; A2)(equivalente aGIORNI)=NETWORKDAYS(A2; B2; Festivi!A:A)=WORKDAY(A2; 10; Festivi!A:A)
-
Python con pandas
Per analisi su larga scala:import pandas as pd from pandas.tseries.holiday import USFederalHolidayCalendar # Crea un calendario con festivi cal = USFederalHolidayCalendar() holidays = cal.holidays(start='2023-01-01', end='2023-12-31') # Calcola giorni lavorativi start = pd.to_datetime('2023-01-01') end = pd.to_datetime('2023-01-31') business_days = pd.bdate_range(start, end, freq='C', holidays=holidays) print(len(business_days))Vantaggio: Gestione avanzata di serie temporali e integrazione con machine learning. -
R con lubridate
Pacchetto specializzato per la manipolazione di date:library(lubridate) library(timeDate) start_date <- as.Date("2023-01-01") end_date <- as.Date("2023-01-31") # Crea vettore di festivi holidays <- as.Date(c("2023-01-01", "2023-01-06")) # Calcola giorni lavorativi business_days <- length(setdiff(seq(start_date, end_date, by = "day"), holidays)) business_days <- length(business_days[!weekdays(business_days) %in% c("Saturday", "Sunday")]) print(business_days)Vantaggio: Potenti funzioni statistiche per analisi temporali. -
Strumenti online specializzati
Piattaforme come:- TimeandDate.com - Calcolatore di date con interfaccia visuale
- EpochConverter - Conversione timestamp e calcoli tra date
- ConvertCSV - Strumento per differenze tra date in formati diversi
Domande Frequenti
-
Perché Excel mostra ###### invece della data?
Risposta: La cella non è abbastanza larga per visualizzare la data. Allarga la colonna o riduci la dimensione del font. In alternativa, cambia il formato inGG/MM/AAper risparmiare spazio. -
Come calcolare l'età di una persona?
Risposta: Usa questa formula che considera gli anni compiuti:=ANNO(OGGI()) - ANNO(A2) - SE(MESE(OGGI()) < MESE(A2); 1; SE(MESE(OGGI()) = MESE(A2); SE(GIORNO(OGGI()) < GIORNO(A2); 1; 0); 0))
-
Posso calcolare i giorni tra due orari?
Risposta: Sì, usa questa formula per la differenza in giorni con frazioni:=(B2 - A2)
Dove A2 e B2 contengono data e ora. Formatta la cella comeNumerocon 2 decimali per vedere i giorni e le frazioni di giorno. -
Come gestire i anni bisestili?
Risposta: Excel gestisce automaticamente gli anni bisestili. La funzione=ANNO.BISESTILE(ANNO)restituisceVEROse l'anno è bisestile. Per verificare manualmente:=SE(RESTO(ANNO; 4) = 0; VERO; FALSO)
(Nota: questa formula semplificata non considera le eccezioni per anni divisibili per 100 ma non per 400) -
Come calcolare i giorni tra due date in mesi diversi?
Risposta: Tutte le funzioni menzionate (sottrazione,GIORNI,GIORNI.LAVORATIVI) funzionano automaticamente tra mesi e anni diversi. Excel gestisce internamente le differenze di lunghezza dei mesi.
Conclusione e Prospettive Future
Il calcolo dei giorni tra date è una delle operazioni più comuni in Excel,
con applicazioni che spaziano dalla gestione progetti alla finanza personale.
Mentre le funzioni di base come GIORNI coprono la maggior parte
delle esigenze, le funzioni avanzate per i giorni lavorativi e la gestione
dei festivi permettono di modellare scenari reali con precisione.
Con l'evoluzione di Excel verso l'intelligenza artificiale (funzioni come
LAMBDA e LET), le possibilità di personalizzazione
sono diventate quasi illimitate. La prossima frontiera sarà l'integrazione
con servizi cloud per il calcolo delle date in tempo reale, considerando
automaticamente i festivi locali in base alla geolocalizzazione.
Per rimanere aggiornati sulle nuove funzionalità, consulta regolarmente: