Calcolatore Giorni Lavorativi tra Due Date (Excel)
Guida Completa: Come Calcolare i Giorni Lavorativi tra Due Date in Excel
Calcolare i giorni lavorativi tra due date è un’operazione fondamentale per la gestione dei progetti, la pianificazione delle scadenze e l’organizzazione del lavoro. Excel offre diverse funzioni per eseguire questo calcolo in modo preciso, tenendo conto dei fine settimana e delle festività nazionali.
Metodo 1: Utilizzo della Funzione NETWORKDAYS
La funzione NETWORKDAYS è lo strumento principale in Excel per calcolare i giorni lavorativi tra due date. La sua sintassi di base è:
=NETWORKDAYS(data_inizio; data_fine; [festività])
Parametri:
- data_inizio: La data di inizio del periodo (obbligatoria)
- data_fine: La data di fine del periodo (obbligatoria)
- festività: [Facoltativo] Un intervallo di celle contenente le date delle festività da escludere
Esempio pratico:
Supponiamo di voler calcolare i giorni lavorativi tra il 1 gennaio 2024 e il 31 gennaio 2024, escludendo le festività italiane:
- Inserisci le date in due celle (es. A1 = 01/01/2024, B1 = 31/01/2024)
- Crea un elenco di festività italiane in un intervallo (es. D1:D5)
- Utilizza la formula:
=NETWORKDAYS(A1; B1; D1:D5)
Metodo 2: Funzione NETWORKDAYS.INTL per Personalizzazione
La funzione NETWORKDAYS.INTL offre maggiore flessibilità nella definizione dei giorni lavorativi:
=NETWORKDAYS.INTL(data_inizio; data_fine; [fine_settimana]; [festività])
Parametri aggiuntivi:
- fine_settimana: [Facoltativo] Un numero o una stringa che specifica quali giorni sono considerati fine settimana (default: sabato e domenica)
- 1 = Sabato e Domenica (default)
- 2 = Domenica e Lunedì
- 11 = Solo Domenica
- Può anche essere una stringa di 7 caratteri dove “0” = giorno lavorativo e “1” = fine settimana (es. “0000011” per sabato e domenica)
Esempio: Per calcolare i giorni lavorativi considerando solo la domenica come giorno non lavorativo:
=NETWORKDAYS.INTL(A1; B1; 11; D1:D5)
Confronto tra NETWORKDAYS e NETWORKDAYS.INTL
| Caratteristica | NETWORKDAYS | NETWORKDAYS.INTL |
|---|---|---|
| Fine settimana predefinito | Sabato e Domenica | Sabato e Domenica |
| Personalizzazione fine settimana | No | Sì (11 opzioni predefinite + stringa personalizzata) |
| Gestione festività | Sì | Sì |
| Compatibilità | Excel 2007 e successivi | Excel 2010 e successivi |
| Flessibilità | Bassa | Alta |
Elenco delle Festività Italiane 2024-2025
Per calcoli precisi in Italia, è fondamentale includere tutte le festività nazionali. Ecco l’elenco ufficiale:
| Data | Nome Festività | Tipo |
|---|---|---|
| 1 gennaio | Capodanno | Nazionale |
| 6 gennaio | Epifania | Nazionale |
| 9 aprile (2024) | Pasqua | Mobile |
| 10 aprile (2024) | Lunedì dell’Angelo | Mobile |
| 25 aprile | Festa della Liberazione | Nazionale |
| 1 maggio | Festa del Lavoro | Nazionale |
| 2 giugno | Festa della Repubblica | Nazionale |
| 15 agosto | Ferragosto | Nazionale |
| 1 novembre | Ognissanti | Nazionale |
| 8 dicembre | Immacolata Concezione | Nazionale |
| 25 dicembre | Natale | Nazionale |
| 26 dicembre | Santo Stefano | Nazionale |
Errori Comuni e Come Evitarli
-
Formato date errato:
Assicurati che le celle contenenti le date siano formattate correttamente come date (Formato Celle > Data). Excel potrebbe interpretare erroneamente le date come testo se importate da fonti esterne.
-
Dimenticare le festività locali:
Oltre alle festività nazionali, alcune regioni o città hanno festività locali (es. il patrono). Ricorda di includerle nel tuo calcolo se pertinenti.
-
Ordine errato delle date:
Se la data di inizio è successiva alla data di fine, Excel restituirà un valore negativo. Utilizza la funzione ASS per evitare errori:
=ASS(NETWORKDAYS(A1; B1; D1:D5)) -
Fuso orario non considerato:
Se lavori con date provenienti da sistemi diversi, verifica che non ci siano discrepanze dovute ai fusi orari che potrebbero spostare la data di un giorno.
Soluzioni Avanzate
Per scenari complessi, puoi combinare più funzioni Excel:
1. Calcolo con giorni lavorativi parziali
Se devi considerare orari di lavoro specifici (es. solo mattinate), puoi utilizzare:
=(NETWORKDAYS(A1; B1; D1:D5) * 8) - (ORARIO.LAVORO.TOTALE(A1; B1; D1:D5; "08:00"; "12:00")
2. Creazione di un calendario dinamico
Per visualizzare graficamente i giorni lavorativi:
- Crea una colonna con tutte le date nel range
- Utilizza la formattazione condizionale per evidenziare i giorni non lavorativi
- Aggiungi una colonna con la formula:
=SE(OR(SETTIMANA(E2;2)>5; CONTA.SE($D$2:$D$10;E2)>0);"Non lavorativo";"Lavorativo")
3. Automazione con VBA
Per calcoli ricorrenti, puoi creare una funzione personalizzata in VBA:
Function GiorniLavorativiItalian(dataInizio As Date, dataFine As Date) As Integer
Dim festivita As Variant
festivita = Array(DateSerial(Year(dataInizio), 1, 1), _
DateSerial(Year(dataInizio), 1, 6), _
DateSerial(Year(dataInizio), 4, 25), _
DateSerial(Year(dataInizio), 5, 1), _
DateSerial(Year(dataInizio), 6, 2), _
DateSerial(Year(dataInizio), 8, 15), _
DateSerial(Year(dataInizio), 11, 1), _
DateSerial(Year(dataInizio), 12, 8), _
DateSerial(Year(dataInizio), 12, 25), _
DateSerial(Year(dataInizio), 12, 26))
' Aggiungi Pasqua e Lunedì dell'Angelo (calcolo dinamico)
Dim pasqua As Date
pasqua = DataPasqua(Year(dataInizio))
ReDim Preserve festivita(UBound(festivita) + 1)
festivita(UBound(festivita)) = pasqua
ReDim Preserve festivita(UBound(festivita) + 1)
festivita(UBound(festivita)) = pasqua + 1
GiorniLavorativiItalian = Application.WorksheetFunction.NetWorkdays(dataInizio, dataFine, festivita)
End Function
Function DataPasqua(anno As Integer) As Date
Dim a As Integer, b As Integer, c As Integer
Dim k As Integer, m As Integer, d As Integer
a = anno Mod 19
b = anno \ 100
c = anno Mod 100
k = b \ 4
m = (15 + b - k) Mod 30
d = (19 * a + m) Mod 30
DataPasqua = DateSerial(anno, 3, 21 + d + (c \ 4 - (c + 8) \ 25 + 1) Mod 7)
End Function
Integrazione con Altri Strumenti
Il calcolo dei giorni lavorativi non è limitato a Excel. Ecco come integrarlo con altri strumenti:
1. Google Sheets
Google Fogli offre la stessa funzione NETWORKDAYS con sintassi identica. Puoi anche importare direttamente i tuoi fogli Excel:
=NETWORKDAYS(A1; B1; D1:D5)
2. Power Query
Per analisi avanzate:
- Carica i tuoi dati in Power Query
- Aggiungi una colonna personalizzata con la formula M:
= Date.IsInNextNDays([DataFine], Number.From([DataInizio]), Day.Monday..Day.Friday)
3. Python con Pandas
Per automazione e analisi dati su larga scala:
import pandas as pd
from pandas.tseries.holiday import USFederalHolidayCalendar as Calendar
# Crea un calendario con festività
cal = Calendar()
holidays = cal.holidays(start='2024-01-01', end='2024-12-31')
# Calcola giorni lavorativi
start_date = '2024-01-15'
end_date = '2024-02-15'
business_days = pd.bdate_range(start=start_date, end=end_date, freq='C', holidays=holidays)
print(len(business_days))
Casi Pratici e Applicazioni Reali
Il calcolo dei giorni lavorativi ha applicazioni in numerosi contesti professionali:
1. Gestione Progetti
- Calcolo delle tempistiche realistiche per la consegna
- Pianificazione delle milestone tenendo conto dei giorni non lavorativi
- Allocazione delle risorse in base ai giorni effettivamente disponibili
2. Risorse Umane
- Calcolo dei periodi di preavviso
- Gestione delle ferie e dei permessi
- Determinazione dei giorni di malattia retribuiti
3. Logistica e Consegne
- Stima dei tempi di consegna reali
- Pianificazione delle rotte di trasporto
- Gestione degli inventari in base ai giorni operativi
4. Finanza e Contabilità
- Calcolo degli interessi in base ai giorni lavorativi
- Determinazione delle scadenze dei pagamenti
- Gestione dei termini di pagamento dei fornitori
Differenze Internazionali
È importante notare che la definizione di “giorno lavorativo” varia significativamente tra paesi:
| Paese | Giorni Non Lavorativi Standard | Festività Medie Annuche | Particolarità |
|---|---|---|---|
| Italia | Sabato, Domenica | 12 | Molte festività religiose (Pasqua, Santo Stefano) |
| Germania | Sabato, Domenica | 9-13 | Varia tra stati federali (es. Baviera ha più festività) |
| Francia | Sabato, Domenica | 11 | 1 maggio è l’unica festività che non può essere recuperata |
| USA | Sabato, Domenica | 10 | Giorno del Ringraziamento (quarto giovedì di novembre) |
| Giappone | Sabato, Domenica | 16 | Molte festività legate a tradizioni locali (es. Hanami) |
| Emirati Arabi | Venerdì, Sabato | 13 | Fine settimana venerdì-sabato (non sabato-domenica) |
Domande Frequenti
1. Come gestire le festività che cadono di sabato o domenica?
In Italia, quando una festività cade di sabato o domenica, non viene generalmente recuperata (eccezione per alcune festività come il 25 aprile o il 1 maggio che possono essere spostate al lunedì successivo). In Excel, puoi:
- Includere comunque la data nel tuo elenco di festività
- Utilizzare la funzione GIORNO.SETTIMANA per verificare se la festività cade in un fine settimana
- Creare una tabella di recupero delle festività per gli anni specifici
2. È possibile calcolare i giorni lavorativi tra due date in orari specifici?
Sì, puoi combinare le funzioni NETWORKDAYS con ORARIO.LAVORO.TOTALE:
=ORARIO.LAVORO.TOTALE(A1; B1; D1:D5; "09:00"; "17:00")
Questa formula restituirà il numero totale di ore lavorative tra due date, considerando un orario lavorativo dalle 9:00 alle 17:00.
3. Come gestire i ponti?
I “ponti” (giorni lavorativi tra due festività) sono spesso considerati giorni non lavorativi in molte aziende. Puoi:
- Creare una tabella personalizzata con tutti i ponti previsti
- Utilizzare una formula condizionale per identificarli automaticamente:
=SE(E(GIORNO.SETTIMANA(E2;2)=5; CONTA.SE($D$2:$D$10;E2+1)>0);"Ponte";"")
4. Esiste un modo per calcolare i giorni lavorativi tra due date in Power BI?
Sì, in Power BI puoi:
- Creare una tabella calendario con una colonna che identifichi i giorni lavorativi
- Utilizzare DAX per contare i giorni lavorativi:
WorkingDays =
VAR StartDate = MIN('Table'[StartDate])
VAR EndDate = MAX('Table'[EndDate])
RETURN
CALCULATE(
COUNTROWS('Calendar'),
'Calendar'[Date] >= StartDate,
'Calendar'[Date] <= EndDate,
'Calendar'[IsWorkingDay] = TRUE
)
5. Come posso verificare la correttezza del mio calcolo?
Per validare i tuoi calcoli:
- Confronta con un calendario manuale
- Utilizza il nostro calcolatore online (in questa pagina) per una seconda opinione
- Verifica alcune date campione con calcoli manuali
- Utilizza la funzione GIORNO.SETTIMANA per controllare che i fine settimana siano correttamente esclusi