Calcolatore Giorni Lavorativi tra Due Date (Excel)
Calcola precisamente i giorni lavorativi tra due date, escludendo festivi e weekend, con risultati compatibili con Excel. Ottimizzato per professionisti HR, project manager e contabili.
Risultati
Guida Completa al Calcolo dei Giorni Lavorativi tra Due Date in Excel
Il calcolo preciso dei giorni lavorativi tra due date è un’operazione fondamentale per professionisti in ambiti come risorse umane, gestione progetti, contabilità e logistica. Excel offre diverse funzioni per questo scopo, ma la loro corretta applicazione richiede la conoscenza di sintassi specifiche e la considerazione di variabili come festivi nazionali, weekend e giorni personalizzati.
Metodi Principali in Excel per Calcolare Giorni Lavorativi
- Funzione GIORNI.LAVORATIVI.TOT (Excel 2010 e successivi):
- Sintassi:
=GIORNI.LAVORATIVI.TOT(data_inizio; data_fine; [festivi]) - Vantaggi: Include automaticamente sabati e domeniche come non lavorativi
- Limitazioni: Richiede l’inserimento manuale dei festivi come intervallo
- Sintassi:
- Funzione GIORNI.LAVORATIVI (versioni precedenti):
- Sintassi:
=GIORNI.LAVORATIVI(data_inizio; data_fine; [festivi]) - Differenza: Non considera il sabato come giorno non lavorativo per default
- Sintassi:
- Combinazione di funzioni per soluzioni personalizzate:
=GIORNI(data_fine; data_inizio) - (CONTA.SE(intervallo_festivi; ">="&data_inizio) - CONTA.SE(intervallo_festivi; ">="&data_fine))
Festivi Nazionali da Considerare (Italia 2024)
| Data | Nome Festività | Tipo | Note |
|---|---|---|---|
| 01/01/2024 | Capodanno | Nazionale | Fisso |
| 06/01/2024 | Epifania | Nazionale | Fisso |
| 09/04/2024 | Pasqua | Religiosa | Mobile |
| 10/04/2024 | Lunedì dell’Angelo | Religiosa | Mobile |
| 25/04/2024 | Festa della Liberazione | Nazionale | Fisso |
| 01/05/2024 | Festa del Lavoro | Nazionale | Fisso |
| 02/06/2024 | Festa della Repubblica | Nazionale | Fisso |
| 15/08/2024 | Ferragosto | Nazionale | Fisso |
| 01/11/2024 | Ognissanti | Religiosa | Fisso |
| 08/12/2024 | Immacolata Concezione | Religiosa | Fisso |
| 25/12/2024 | Natale | Nazionale | Fisso |
| 26/12/2024 | Santo Stefano | Nazionale | Fisso |
Confronti Internazionali: Giorni Festivi per Paese (2024)
| Paese | Giorni Festivi Nazionali | Giorni Festivi Regionali (media) | Giorni Lavorativi Anno (escl. weekend) |
|---|---|---|---|
| Italia | 12 | 2-4 | 251 |
| Germania | 9 | 3-5 | 253 |
| Francia | 11 | 1 | 250 |
| Spagna | 10 | 4-6 | 250 |
| Regno Unito | 8 | 1-2 | 256 |
| Stati Uniti | 10 | 0-1 | 260 |
Errori Comuni e Soluzioni
- Dimenticare di includere i festivi mobili:
- Problema: Funzioni come GIORNI.LAVORATIVI.TOT non considerano automaticamente Pasqua e festività correlate
- Soluzione: Creare una tabella separata con tutte le date mobili calcolate tramite formule come:
=DATA.ANO(anno; 4; 1) + (14 - SETTIMANA(DATA.ANO(anno; 4; 1); 2))per Pasqua
- Confondere le funzioni GIORNI e GIORNI.LAVORATIVI:
- Problema:
=GIORNI(data_fine; data_inizio)restituisce TUTTI i giorni, inclusi weekend e festivi - Soluzione: Usare sempre
GIORNI.LAVORATIVI.TOTper risultati accurati
- Problema:
- Formato date non riconosciuto:
- Problema: Excel potrebbe interpretare erroneamente date in formato testo (es: “01/05/2024” come 1 maggio o 5 gennaio)
- Soluzione: Usare
=DATA.VALORE("01/05/2024")o formattare le celle come Data
Soluzioni Avanzate con Power Query
Per progetti complessi che richiedono il calcolo di giorni lavorativi su grandi dataset, Power Query offre soluzioni più efficienti:
- Creazione di una tabella calendario:
- Generare una tabella con tutte le date dell’anno
- Aggiungere colonne per:
- Giorno della settimana (1-7)
- Flag “Festivo” (SI/NO)
- Flag “Lavorativo” (calcolato)
- Funzione personalizzata in M:
(let StartDate = #date(2024, 1, 1), EndDate = #date(2024, 12, 31), // Lista festivi italiani 2024 Holidays = { #date(2024, 1, 1), #date(2024, 1, 6), #date(2024, 4, 9), #date(2024, 4, 10), #date(2024, 4, 25), #date(2024, 5, 1), #date(2024, 6, 2), #date(2024, 8, 15), #date(2024, 11, 1), #date(2024, 12, 8), #date(2024, 12, 25), #date(2024, 12, 26) }, // Genera lista date Dates = List.Dates(StartDate, Duration.Days(EndDate - StartDate) + 1, #duration(1,0,0,0)), // Aggiungi informazioni TableFromList = Table.FromList(Dates, Splitter.SplitByNothing(), {"Date"}, null, ExtraValues.Error), AddDayOfWeek = Table.AddColumn(TableFromList, "DayOfWeek", each Date.DayOfWeek([Date])), AddIsHoliday = Table.AddColumn(AddDayOfWeek, "IsHoliday", each List.Contains(Holidays, [Date])), AddIsWeekend = Table.AddColumn(AddIsHoliday, "IsWeekend", each [DayOfWeek] = 6 or [DayOfWeek] = 0), AddIsWorkingDay = Table.AddColumn(AddIsWeekend, "IsWorkingDay", each not ([IsHoliday] or [IsWeekend])) in AddIsWorkingDay)
Integrazione con Altri Strumenti
Il calcolo dei giorni lavorativi spesso deve essere integrato con altri sistemi:
- Google Sheets:
- Funzione equivalente:
=NETWORKDAYS(start_date, end_date, [holidays]) - Vantaggio: Condivisione in tempo reale e collaborazione
- Funzione equivalente:
- Python (Pandas):
import pandas as pd from pandas.tseries.holiday import USFederalHolidayCalendar # Crea calendario festivi cal = USFederalHolidayCalendar() 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)) - JavaScript (per applicazioni web):
- Librerie utili:
date-fns,moment-business-days - Esempio con date-fns:
import { eachDayOfInterval, isWeekend, isHoliday } from 'date-fns' import { itHolidays } from 'date-fns-holiday/it' const start = new Date(2024, 0, 15) const end = new Date(2024, 1, 15) let workingDays = 0 eachDayOfInterval({ start, end }).forEach(date => { if (!isWeekend(date) && !isHoliday(date, itHolidays)) { workingDays++ } })
- Librerie utili:
Fonti Ufficiali e Risorse Utili
Per dati aggiornati sui festivi nazionali e normative sul lavoro:
- Gazzetta Ufficiale della Repubblica Italiana – Pubblica i decreti ufficiali sui festivi nazionali
- Eurostat – Dati comparativi sui giorni lavorativi nell’UE
- Organizzazione Internazionale del Lavoro (ILO) – Standard internazionali su orari di lavoro
Domande Frequenti
- Come calcolare i giorni lavorativi tra due date includendo solo alcuni giorni della settimana?
Usa la funzione
=GIORNI.LAVORATIVI.INTLcon il parametro weekend personalizzato:=GIORNI.LAVORATIVI.INTL(data_inizio; data_fine; [weekend]; [festivi]) // Esempio: considera lavorativi solo lunedì, mercoledì e venerdì =GIORNI.LAVORATIVI.INTL(A1; B1; "0010111"; C1:C10) - È possibile calcolare le ore lavorative invece dei giorni?
Sì, combinando le funzioni per giorni lavorativi con il calcolo delle ore:
=GIORNI.LAVORATIVI.TOT(A1; B1) * 8 // Per 8 ore lavorative/giornoPer orari variabili, crea una tabella con le ore per ciascun giorno e usa=SOMMA.PRODOTTO. - Come gestire i festivi che cadono di sabato o domenica?
In Italia, alcuni festivi (come il 25 aprile o il 1° maggio) che cadono di domenica vengono spesso “recuperati” il lunedì successivo. Per gestire questi casi:
- Crea una tabella con le date effettive dei festivi “spostati”
- Usa una funzione personalizzata in VBA per gestire le eccezioni
Conclusione e Best Practices
Il calcolo accurato dei giorni lavorativi è essenziale per:
- Pianificazione progetti: Stima realistiche delle tempistiche
- Gestione risorse umane: Calcolo ferie, permessi e straordinari
- Logistica e supply chain: Programmazione consegne e scorte
- Contabilità: Scadenze fiscali e pagamenti
Consigli finali:
- Mantieni sempre un calendario aggiornato dei festivi nazionali e regionali
- Per progetti internazionali, considera le differenze nei giorni festivi tra paesi
- Usa formule strutturate invece di valori hard-coded per facilitare gli aggiornamenti
- Documenta sempre le ipotesi di calcolo (es: “esclusi sabati e festivi nazionali”)
- Per analisi complesse, considera l’uso di Power BI o Tableau per visualizzazioni interattive