Calcolatore Giorni tra Due Date in Excel
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 finanziaria. Questa guida approfondita ti mostrerà tutti i metodi disponibili, dalle funzioni di base alle tecniche avanzate, con esempi pratici e consigli per evitare errori comuni.
1. Funzioni Base per il Calcolo dei Giorni
1.1 Funzione GIORNI (DAYS)
La funzione più semplice per calcolare la differenza tra due date:
=GIORNI(data_fine; data_inizio)
Esempio: =GIORNI("15/03/2023"; "01/01/2023") restituisce 73 giorni.
- Vantaggi: Semplice e diretta
- Limitazioni: Non considera anni bisestili in modo specifico (ma li gestisce correttamente)
- Compatibilità: Excel 2013 e versioni successive
1.2 Operatore di Sottrazione
Puoi semplicemente sottrarre due date:
=data_fine - data_inizio
Esempio: ="15/03/2023" - "01/01/2023"
Nota: Excel memorizza le date come numeri seriali (1 = 1/1/1900), quindi la sottrazione funziona perfettamente.
2. Funzioni Avanzate per Calcoli Specifici
2.1 GIORNI.360 (DAYS360)
Calcola i giorni basandosi su un anno di 360 giorni (12 mesi da 30 giorni), usato in contabilità:
=GIORNI.360(data_inizio; data_fine; [metodo])
Parametri:
metodo: FALSE (Europa) o TRUE (USA). Default FALSE.
| Metodo | Comportamento | Esempio |
|---|---|---|
| FALSE (Europa) | Se il giorno di inizio è 31, viene cambiato in 30 | =GIORNI.360(“31/01/2023″;”15/03/2023”;FALSE) → 43 |
| TRUE (USA) | Se il giorno di inizio è 31, viene cambiato in 30. Se la data di fine è 31, e la data di inizio è <30, la data di fine viene cambiata in 1 del mese successivo | =GIORNI.360(“31/01/2023″;”31/03/2023”;TRUE) → 59 |
2.2 FRAZIONE.ANNO (YEARFRAC)
Calcola la frazione di anno tra due date, utile per interessi e ammortamenti:
=FRAZIONE.ANNO(data_inizio; data_fine; [base])
Parametri base:
- 0 o omesso: US (NASD) 30/360
- 1: Attuale/attuale
- 2: Attuale/360
- 3: Attuale/365
- 4: Europeo 30/360
2.3 DATA.DIFF (DATEDIF)
Funzione “nascosta” per calcoli complessi (anni, mesi, giorni):
=DATA.DIFF(data_inizio; data_fine; unità)
Unità disponibili:
- “Y”: Anni completi
- “M”: Mesi completi
- “D”: Giorni
- “MD”: Differenza giorni (ignora mesi e anni)
- “YM”: Differenza mesi (ignora giorni e anni)
- “YD”: Differenza giorni (come se fosse lo stesso anno)
Esempi:
=DATA.DIFF("01/01/2020";"15/03/2023";"Y")→ 3 (anni completi)=DATA.DIFF("01/01/2020";"15/03/2023";"YM")→ 2 (mesi oltre gli anni completi)=DATA.DIFF("01/01/2020";"15/03/2023";"MD")→ 14 (giorni oltre mesi e anni completi)
3. Calcolo dei Giorni Lavorativi
3.1 GIORNI.LAVORATIVI (NETWORKDAYS)
Calcola i giorni lavorativi escludendo sabato, domenica e festività:
=GIORNI.LAVORATIVI(data_inizio; data_fine; [festività])
Esempio: =GIORNI.LAVORATIVI("01/01/2023";"31/01/2023";{"06/01/2023"}) → 21 giorni lavorativi (esclude Epifania)
3.2 GIORNI.LAVORATIVI.INTL (NETWORKDAYS.INTL)
Versione flessibile che permette di definire quali giorni sono weekend:
=GIORNI.LAVORATIVI.INTL(data_inizio; data_fine; [fine_settimana]; [festività])
Parametri fine_settimana:
- 1: Sabato e Domenica (default)
- 2: Domenica e Lunedì
- 3: Lunedì e Martedì
- …
- 11: Solo Domenica
- 12: Solo Sabato
- 13: Solo Venerdì
- 14: Solo Venerdì e Sabato
- 15: Solo Venerdì e Domenica
- 16: Solo Sabato e Domenica
- 17: Solo Sabato
Consiglio Professionale: Per i paesi musulmani dove il weekend è venerdì-sabato, usa =GIORNI.LAVORATIVI.INTL(data_inizio; data_fine; 14)
4. Gestione Errori Comuni
-
#VALORE!: Verifica che entrambi gli argomenti siano date valide. Usa
=DATAVALORE("01/01/2023")per convertire stringhe in date. -
#NUM!: La data di fine è precedente alla data di inizio. Usa
=ASS(data_fine > data_inizio)per verificare. - Risultati inattesi con GIORNI.360: Ricorda che questa funzione usa sempre mesi di 30 giorni, indipendentemente dalla realtà.
-
Festività non riconosciute: In GIORNI.LAVORATIVI, assicurati che le festività siano in un intervallo di celle o come costante matrice
{"01/01/2023";"06/01/2023"}
5. Tecniche Avanzate
5.1 Calcolo Giorni tra Date in Anni Diversi con Anni Bisestili
Per calcoli precisi che considerano gli anni bisestili:
=data_fine - data_inizio - CONTA.SE(INT(data_inizio:data_fine); INT(data_inizio:data_fine)) + 1
Oppure usa:
=SOMMAPRODOTTO(--(ANNO(SEQUENZA(data_fine-data_inizio;1;;data_inizio))=ANNO(data_inizio));1)
5.2 Creare un Calendario Dinamico
Combinando diverse funzioni puoi creare un calendario che evidenzia i giorni lavorativi:
=SE(ERRORE(GIORNO.SETTIMANA(A1;2));"";SE(O(GIORNO.SETTIMANA(A1;2)>5;CONTA.NUMERO(CERCA(A1;festività)));"Festivo";"Lavorativo"))
5.3 Calcolo Ore/Lavoro tra Due Date
Per calcolare le ore lavorative (es. 8 ore/giorno):
=GIORNI.LAVORATIVI(data_inizio; data_fine) * 8
Per includere orari specifici:
=SE(data_fine6. Confronto tra Metodi di Calcolo
Metodo Precisione Velocità Uso Tipico Gestione Anni Bisestili Gestione Festività Operatore - ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ Calcoli generici Sì No GIORNI ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ Calcoli generici Sì No GIORNI.360 ⭐⭐ ⭐⭐⭐⭐ Contabilità No (360 giorni) No FRAZIONE.ANNO ⭐⭐⭐⭐ ⭐⭐⭐ Finanza, interessi Dipende dalla base No DATA.DIFF ⭐⭐⭐⭐ ⭐⭐⭐⭐ Età, scadenze Sì No GIORNI.LAVORATIVI ⭐⭐⭐⭐ ⭐⭐⭐ Progetti, HR Sì Sì 7. Integrazione con Power Query
Per analisi avanzate su grandi dataset:
- Importa i tuoi dati in Power Query
- Aggiungi una colonna personalizzata con formula:
= Duration.Days([Data Fine] - [Data Inizio]) + 1- Per giorni lavorativi, usa:
(dataFine, dataInizio) => let DateList = List.Dates(dataInizio, Duration.Days(dataFine - dataInizio) + 1, #duration(1,0,0,0)), Weekdays = List.Select(DateList, each Date.DayOfWeek(_, Day.Monday) < 5), Holidays = {...}, // Elenco festività WorkingDays = List.Except(Weekdays, Holidays) in List.Count(WorkingDays)8. Automazione con VBA
Per soluzioni personalizzate, puoi creare una funzione VBA:
Function GiorniLavorativiPersonalizzati(inizio As Date, fine As Date, Optional festivi As Variant) As Long Dim giorni As Long Dim dataCorrente As Date Dim i As Long giorni = 0 dataCorrente = inizio Do While dataCorrente <= fine Select Case Weekday(dataCorrente, vbMonday) Case 1 To 5 'Lunedì a Venerdì 'Controlla festività If Not IsMissing(festivi) Then For i = LBound(festivi) To UBound(festivi) If DateValue(festivi(i)) = dataCorrente Then GoTo NextDay Next i End If giorni = giorni + 1 End Select NextDay: dataCorrente = dataCorrente + 1 Loop GiorniLavorativiPersonalizzati = giorni End FunctionChiamala in Excel con:
=GiorniLavorativiPersonalizzati(A1;B1;{"01/01/2023";"06/01/2023"})9. Fonti Ufficiali e Risorse
Per approfondimenti autorevoli:
- Documentazione ufficiale Microsoft Excel - Guida completa a tutte le funzioni di data
- Internal Revenue Service (IRS) - Standard contabili per il calcolo degli interessi (sezione "Interest Calculation")
- Banca Centrale Europea - Linee guida per il calcolo dei giorni in operazioni finanziarie (documento "Day Count Conventions")
10. Domande Frequenti
10.1 Come gestire i fusi orari nel calcolo delle date?
Excel non gestisce nativamente i fusi orari. Soluzioni:
- Converti tutte le date in UTC prima del calcolo
- Usa
=data + (fuso_orario/24)per aggiustare- Per progetti internazionali, standardizza su un fuso orario di riferimento
10.2 Posso calcolare i giorni tra due date includendo solo alcuni giorni della settimana?
Sì, con una formula matrice:
{=SOMPRODOTTO(--(GIORNO.SETTIMANA(SEQUENZA(data_fine-data_inizio+1;1;;data_inizio);2)=giorni_deseiderati))}Dove
giorni_deseideratiè un array come{2;3;4}per martedì, mercoledì, giovedì.10.3 Come contare i giorni di un mese specifico tra due date?
Usa:
=SOMPRODOTTO(--(MESE(SEQUENZA(data_fine-data_inizio+1;1;;data_inizio))=mese_deseiderato))10.4 È possibile calcolare i giorni trascorsi da oggi automaticamente?
Sì, con
=OGGI()-data_inizio. Per aggiornamento automatico, premi F9 o imposta il calcolo automatico in Formule > Opzioni di calcolo.10.5 Come gestire le date prima del 1900?
Excel per Windows usa il sistema di date 1900 (1=01/01/1900), mentre Excel per Mac prima del 2011 usava il sistema 1904 (0=01/01/1904). Per date precedenti:
- Usa testo e converti manualmente
- Crea una tabella di riferimento
- Considera strumenti esterni per dati storici