How to Use EOMONTH in Excel
EOMONTH returns the last day of a month before or after a date. Learn the syntax, finance examples, and common date mistakes.
Reviewed by Griddy
Updated for current Excel and Google Sheets workflows, with examples chosen to map back to real spreadsheet tasks rather than abstract formula syntax.
EOMONTH returns the last day of a month based on a starting date and a month offset. Use it when reports, invoices, budgets, accruals, or payment schedules need a true month-end date instead of a manually typed cutoff.
It is especially useful in finance sheets because month lengths change. February, leap years, and 30-day months all work correctly when the date logic is handled by Excel.
The syntax
=EOMONTH(start_date, months)- start_date — the date Excel starts from
- months — how many months to move before returning the month-end date
Use 0 for the end of the same month, 1 for the end of next month, and -1 for the end of the prior month.
Basic example
If A2 contains 5/14/2026 and you want the month-end date for that same month:
=EOMONTH(A2, 0)Excel returns 5/31/2026.
If you want the end of the next month:
=EOMONTH(A2, 1)Excel returns 6/30/2026.
Step-by-step reporting cutoff example
Say you maintain a small business budget template and each month needs a reporting cutoff date. The transaction date is in A2, and the budget month-end should appear in B2.
Step 1. Confirm A2 is a real Excel date, not text.
Step 2. In B2, enter:
=EOMONTH(A2, 0)Step 3. Format B2 as a date.
Step 4. Fill the formula down for the rest of the transaction list.
Now every transaction rolls to the correct month-end date, which makes pivot tables, monthly summaries, and accrual schedules easier to audit.
Use EOMONTH for invoice due dates
EOMONTH is also useful when invoices are due at the end of a month.
If the invoice date is in A2 and payment is due at the end of the following month:
=EOMONTH(A2, 1)That pattern works well in an invoice template when clients pay on month-end terms instead of net 15 or net 30 terms.
✦ TIP
If the due date should be the first day of the next month, use =EOMONTH(A2, 0)+1.
Common EOMONTH mistakes
| Mistake | What happens | Fix |
|---|---|---|
| Typing the cutoff date manually | Month lengths and leap years can be wrong | Use EOMONTH from a source date |
| Using text dates | Formula returns #VALUE! or an unexpected result | Convert the value to a real date |
| Forgetting to format the result as a date | You see a serial number like 46203 | Apply a date format |
Using 30 to mean one month | Results drift across months | Use the months argument instead |
EOMONTH vs EDATE
EOMONTH returns the last day of a month.
EDATE returns the same day-of-month after adding or subtracting months.
If A2 is 5/14/2026, =EDATE(A2, 1) returns 6/14/2026, while =EOMONTH(A2, 1) returns 6/30/2026.
Use EOMONTH for month-end cutoffs, reporting periods, billing cycles, and budget close dates. Use EDATE for renewal dates, anniversary dates, and schedule dates that should keep the same day of the month.
The Griddy way
Month-end formulas get annoying when the sheet also needs invoice terms, overdue flags, or budget periods that depend on several columns.
"Create a month-end cutoff date from each transaction date, then group expenses by that cutoff month"
Griddy can add the EOMONTH formula, format the date column, and connect it to summaries in your budget or expense tracker.
Skip the manual work
Describe it. Griddy does it.
Instead of writing this formula yourself, just tell Griddy what you need in plain English. Works in Excel and Google Sheets.