Funzione EOMONTH in Excel: guida completa e casi d'uso
EOMONTH restituisce l’ultimo giorno del mese relativo a una data di partenza, spostandosi avanti o indietro di un numero specifico di mesi. È ideale per scadenze mensili, budget, forecast e serie temporali; per ottenere lo stesso giorno del mese usa EDATE.
Collegamenti rapidi
- La sintassi di EOMONTH
- Calcolare fine mese futuro
- Calcolare fine mese passato
- Calcolare fine mese per periodi pluriennali
- Fine mese del mese corrente
- Generare sequenze di date di fine mese
La funzione EOMONTH in Microsoft Excel restituisce l’ultimo giorno di un mese nel passato, del mese corrente o in un mese futuro. Che tu debba calcolare scadenze, terminazioni contrattuali, date di fatturazione, ricavi mensili o proiezioni, EOMONTH velocizza il processo.
Per impostazione predefinita EOMONTH restituisce un numero seriale di data. Prima di usarla, applica un formato data alle celle interessate per visualizzare i risultati come date leggibili.
La sintassi di EOMONTH
La funzione EOMONTH richiede due argomenti:
=EOMONTH(a,b)dove l’argomento a è la data di partenza (qualsiasi giorno di un mese/anno) e l’argomento b è il numero di mesi da spostare avanti o indietro rispetto alla data di partenza. Dopo lo spostamento, Excel restituisce l’ultimo giorno del mese in cui si arriva.
L’argomento a può essere: un riferimento a una cella che contiene la data di partenza, una data inserita con la funzione DATE o una data generata da un’altra funzione, p.es. TODAY.
| Argomento a | Descrizione |
|---|---|
| =EOMONTH(A1, | La data di partenza è la data inserita nella cella A1. |
| =EOMONTH(DATE(2025,05,31), | La data di partenza è il 31 maggio 2025. |
| =EOMONTH(TODAY(), | La data di partenza è la data odierna. |
Per l’argomento b, un numero positivo rappresenta i mesi dopo la data di partenza, un numero negativo i mesi prima, e zero indica lo stesso mese. Puoi inserire questo argomento manualmente o riferire una cella che contiene il numero di mesi da avanzare o retrocedere:
| Argomento b | Descrizione |
|---|---|
| =EOMONTH(A1, 5) | Restituisce l’ultimo giorno del mese cinque mesi dopo la data in A1. |
| =EOMONTH(A1, -5) | Restituisce l’ultimo giorno del mese cinque mesi prima della data in A1. |
| =EOMONTH(A1, 0) | Restituisce l’ultimo giorno del mese della data in A1. |
| =EOMONTH(A1, A2) | Usa il valore in A2 come numero di mesi da avanzare e restituisce l’ultimo giorno del mese risultante. |
| =EOMONTH(A1, -A2) | Usa il valore in A2 come numero di mesi da retrocedere e restituisce l’ultimo giorno del mese risultante. |
Calcolare date di fine mese future
L’uso più comune di EOMONTH è restituire l’ultimo giorno di un mese futuro.
Immagina che tu sia il responsabile di progetto di un’azienda di costruzioni e abbia assegnato progetti a dieci risorse. Ogni progetto richiede una certa durata e le scadenze sono fissate alla fine del mese.


Per calcolare le date di fine nella colonna E, usa EOMONTH.
Nella cella E2, digita:
=EOMONTH(Seleziona quindi la cella che contiene la data di inizio e aggiungi la virgola:
=EOMONTH([@[Start date]],Infine seleziona la cella con il numero di mesi da avanzare, chiudi la parentesi e premi Invio:
=EOMONTH([@[Start date]],[@Months])Se i dati sono formattati come tabella Excel, la formula userà riferimenti strutturati alle intestazioni e la colonna si completerà automaticamente a partire dalla prima riga. Se invece si tratta di un intervallo tradizionale, usa il quadratino di riempimento per estendere la formula alle righe successive.

Esempio: data di inizio 4 gennaio 2025, +3 mesi → 4 aprile 2025 → EOMONTH restituisce 30 aprile 2025.
Vantaggi di usare riferimenti di cella invece di valori hard-coded:
- Formula dinamica per ogni riga; rimane corretta se cambi i dati.
- Facile aggiornare durate o date di inizio senza modificare la formula.
Calcolare date di fine mese passate
EOMONTH può anche restituire la data di fine mese di un mese che dista un certo numero di mesi prima della data di partenza.
Esempio pratico: hai una tabella con dieci progetti e vuoi determinare il punto più tardi possibile in cui iniziare ciascun progetto per rispettare la scadenza in colonna E.

Se un progetto richiede cinque mesi, puoi calcolare l’ultimo giorno utile per iniziare ritornando la fine del mese che è sei mesi prima della scadenza (un mese extra come margine). Nella cella D2 usa:
=EOMONTH([@Deadline],-[@Months]-1)Dove: [@Deadline] è la scadenza nella colonna E, -[@Months] retrocede del numero di mesi indicato e -1 aggiunge un mese extra. EOMONTH restituisce l’ultimo giorno del mese risultante.

Esempio: scadenza 27 gennaio 2026, -5 mesi → agosto 2025, -1 mese → luglio 2025 → EOMONTH restituisce 31 luglio 2025. Se l’assegnatario inizia il progetto il 31/07/2025 dovrebbe finire con qualche giorno di margine, se tutto procede come previsto.
Calcolare date di fine mese per periodi pluriennali
EOMONTH lavora in mesi: per saltare anni, moltiplica gli anni per 12.
Immagina di voler calcolare la data di fine per progetti a lungo termine in anni (p.es. 2 anni). In E2:
=EOMONTH([@[Start date]],[@Years]*12)Premendo Invio otterrai la fine del mese corrispondente dopo il numero di anni moltiplicati per 12.
Per retrocedere anni usa il segno meno:
=EOMONTH([@[Start date]],-[@Years]*12)
Fine mese del mese corrente
EOMONTH può restituire l’ultimo giorno del mese corrente in combinazione con TODAY:
=EOMONTH(TODAY(),0)Se vuoi sapere quanti giorni mancano alla fine del mese:
=EOMONTH(TODAY(),0)-TODAY()Questo restituisce un numero (giorni rimanenti). Se Excel lo formatta come data, imposta il formato cella su “Generale” o “Numero”.

Esempio pratico: in una scheda di budget mensile puoi dividere l’importo residuo per i giorni rimanenti per ottenere la spesa giornaliera massima. Se in B6 hai l’eccedenza e in B1 i giorni rimanenti, in B7:
=B6/B1
Generare sequenze di date di fine mese
Combinare funzioni eleva le potenzialità del foglio: ad esempio annidare SEQUENCE dentro EOMONTH restituisce una lista di date di fine mese.
La funzione SEQUENCE ha quattro argomenti:
=SEQUENCE(a,b,c,d)- a è il numero di righe da restituire,
- b è il numero di colonne,
- c è il primo numero della sequenza,
- d è l’incremento.
Esempio: un array di date di fine mese per il 2025:
=EOMONTH(DATE(2024,12,31),SEQUENCE(12))La SEQUENCE restituisce 12 valori e EOMONTH li interpreta come mesi successivi a dicembre 2024, producendo le date di fine mese per ogni mese del 2025.

Nota: SEQUENCE restituisce un array dinamico (spill). Le formule che generano array dinamici non funzionano dentro una tabella Excel; devono essere in un intervallo normale.
Per restituire date ogni due mesi:
=EOMONTH(DATE(2024,12,31),SEQUENCE(6,,,2))Per date trimestrali (ogni 3 mesi):
=EOMONTH(DATE(2025,2,28),SEQUENCE(4,,,3))Dopo aver generato l’elenco, puoi copiarlo e incollare i valori (Ctrl+C, poi Ctrl+Shift+V) per fissare le date e trasformare l’intervallo in tabella.

Suggerimenti pratici e migliori pratiche
- Formatta sempre la cella con il formato “Data” per vedere le date; altrimenti otterrai un numero seriale.
- Assicurati che la cella di partenza contenga una data riconosciuta da Excel (formato data reale). Date memorizzate come testo possono restituire errori o risultati errati.
- Per mantenere dashboard e report riproducibili, usa riferimenti di cella o parametri (p.es. una cella con numero di mesi) invece di numeri hard-coded nella formula.
- Quando usi SEQUENCE con EOMONTH, non essere in una tabella Excel: le funzioni dinamiche non sono compatibili con strutture di tabella.
Limitazioni e casi in cui EOMONTH non è la scelta giusta
- Se vuoi lo stesso giorno del mese risultante (p.es. il 15 del mese dopo), usa EDATE anziché EOMONTH: EDATE sposta la data mantenendo il giorno relativo.
- EOMONTH restituisce sempre l’ultimo giorno del mese: se la logica di business richiede un giorno specifico o un giorno lavorativo (es. ultimo giorno lavorativo), devi combinare con altre funzioni (WORKDAY, NETWORKDAYS, o regole personalizzate).
- Date memorizzate come testo o in formati locali non riconosciuti possono causare errori; converti le date al formato data di Excel.
Alternative rapide e confronti
EOMONTH vs EDATE
- EOMONTH: restituisce l’ultimo giorno del mese risultante.
- EDATE: restituisce la stessa posizione del giorno nel mese risultante (se esiste), altrimenti adatta la data.
Metodo senza EOMONTH (formula classica che usa DATE):
=DATE(YEAR(A1),MONTH(A1)+1,0)Questa formula restituisce l’ultimo giorno del mese di A1 senza usare EOMONTH: costruisce il primo giorno del mese successivo (MONTH+1) e sottrae 0 giorni, che Excel interpreta come l’ultimo giorno del mese precedente.
Snippets e cheat sheet comuni
- Ultimo giorno del mese successivo:
=EOMONTH(A1,1)- Ultimo giorno del mese corrente:
=EOMONTH(A1,0)- Ultimo giorno di N mesi dopo la data in A1:
=EOMONTH(A1,N)- Ultimo giorno N anni avanti (A1 è data di partenza, Years è numero di anni):
=EOMONTH(A1,Years*12)- Giorni rimanenti nel mese:
=EOMONTH(TODAY(),0)-TODAY()Mini-metodologia per introdurre EOMONTH in un report
- Identifica le date di partenza e crea colonne dedicate (Start date, Months, Years, Deadline).
- Verifica che tutte le date siano valori data validi (usa ISNUMBER o DATEVALUE per testare).
- Definisci le regole: ultimo giorno del mese per reporting o giorno equivalente?
- Inserisci formule EOMONTH con riferimenti strutturati se usi tabelle.
- Formatta le colonne come date, testa con casi limite (anno bisestile, fine febbraio, date all’ultimo giorno del mese).
- Documenta la logica nel foglio o in una legenda per i colleghi.
Checklist per ruolo
Project manager
- Colonna durata (mesi) è corretta?
- Date di inizio sono valori data validi?
- Sono previsti margini (es. -1 mese)?
- Le scadenze finali usano EOMONTH per allineare al mese.
Analista finanziario
- I risultati sono formattati in “Data”?
- Le serie temporali sono generate con SEQUENCE dove serve?
- Copiati/incollati i valori prima di trasformare in tabella?
Contabilità
- Le date di fatturazione corrispondono all’ultimo giorno del mese richiesto?
- Si usano regole per giorni lavorativi dove necessario?
Test cases e criteri di accettazione
- Caso base: A1 = 2025-01-04, EOMONTH(A1,3) → 2025-04-30.
- Fine febbraio (anno non bisestile): A1 = 2023-02-10, EOMONTH(A1,0) → 2023-02-28.
- Fine febbraio (anno bisestile): A1 = 2024-02-10, EOMONTH(A1,0) → 2024-02-29.
- Valore come testo: A1 = “10/01/2025” (testo), EOMONTH(A1,1) → errore o risultato inatteso: converti con DATEVALUE.
Esempi pratici: template pronto all’uso
Crea una tabella con colonne: Project, Months, Assignee, Start date, End date.
Nella colonna End date inserisci:
=EOMONTH([@[Start date]],[@Months])Per calcolare la data di inizio da una scadenza e durata inserisci in Start date:
=EOMONTH([@Deadline],-[@Months]-1)Flusso decisionale rapido (Mermaid)
flowchart TD
A[Hai bisogno dell'ultimo giorno del mese?] -->|Sì| B{Hai la data di partenza}
B -->|Sì| C[EOMONTH'data, mesi']
B -->|No| D[Usa TODAY'' o DATE per impostare data]
A -->|No, voglio lo stesso giorno| E[Usa EDATE'data, mesi']
C --> F{Serve una sequenza?}
F -->|Sì| G[Annida SEQUENCE in EOMONTH]
F -->|No| H[Usa EOMONTH normale]Glossario in una riga
- EOMONTH: funzione che restituisce l’ultimo giorno del mese risultante.
- EDATE: funzione che restituisce la stessa posizione del giorno nel mese risultante.
- SEQUENCE: genera un array di numeri (utile per serie temporali).
- TODAY: restituisce la data corrente.
Compatibilità e note di migrazione
- EOMONTH è supportata nelle versioni moderne di Excel (desktop, web e mobile). Le funzioni dinamiche (SEQUENCE) sono disponibili in Excel con supporto per array dinamici (Excel 365 e versioni più recenti). Se lavori in una versione più vecchia, evita SEQUENCE o crea la serie manualmente.
- Quando condividi file con team internazionali, verifica le impostazioni locali della data per evitare interpretazioni diverse (gg/mm/aaaa vs mm/gg/aaaa).
Sicurezza e privacy
La funzione EOMONTH non invia dati esternamente; tuttavia, quando gestisci date sensibili (contratti, scadenze clienti), proteggi i fogli con protezione o controlla i permessi di condivisione per evitare esposizione non autorizzata.
Quando EOMONTH fallisce: esempi ed errori comuni
- #VALUE! se l’argomento data non è una data valida.
- Risultati inattesi se la data è testo: converti con DATEVALUE o DATE.
- Spill di SEQUENCE bloccato se la cella successiva contiene dati: libera lo spazio per l’array o copia/incolla valori.
Riepilogo
EOMONTH è uno strumento semplice e robusto per lavorare con date di fine mese: calcola scadenze, pianificazioni e serie temporali in modo coerente. Quando hai bisogno dello stesso giorno del mese risultante, preferisci EDATE. Se generi serie, abbina SEQUENCE con attenzione alle limitazioni di compatibilità.
Importante: dopo aver creato sequenze dinamiche che vuoi rendere stabili, copia e incolla i valori per evitare dipendenze dinamiche.
Se vuoi, posso generare un file Excel di esempio con tutte le formule pronte (tabella di progetti, tabella di budget, sequenze mensili). Dimmi solo quale template preferisci.