Home / Guides / EOMONTH and EDATE for Model Timelines

EOMONTH and EDATE for Model Timelines

Excel Functions · Updated June 2026

EOMONTH in Excel returns the last day of a month a set number of months away from a start date, which makes it the workhorse for period headers in a model. EDATE returns the same day of the month a set number of months out, which is ideal for anniversary dates. Both take a positive months argument to move forward and a negative one to move backward.

How EOMONTH and EDATE work

=EOMONTH(start_date, months) returns a serial date for the last day of the month that is months away from start_date. With months set to 0 it returns the end of the start date's own month, so =EOMONTH("2026-03-15", 0) gives 2026-03-31.

=EDATE(start_date, months) returns the same day of the month, months away. So =EDATE("2026-01-31", 1) returns 2026-02-28, because February has no 31st and EDATE clamps to the month end.

Both functions return a serial number. Format the result cell as a date so it reads as 2026-03-31 rather than 46112. A positive months argument moves forward in time and a negative one moves backward.

Worked example: a monthly forecast header row

Suppose your forecast starts in January 2026 and you want a row of month-end dates running across the columns.

  1. In B1 enter the model start date, 2026-01-01.
  2. In B2 write =EOMONTH(B1, 0) to get the first period end, 2026-01-31.
  3. In C2 write =EOMONTH(B2, 1) and drag it right; each cell steps to the next month end, giving 2026-02-28, 2026-03-31, and so on.
  4. For a same day anniversary instead, write =EDATE(B1, 12) to get 2027-01-01, exactly one year out.
  5. Format the row as a custom date like mmm-yy so the header reads Jan-26, Feb-26, Mar-26.
ColumnFormulaResult
B2=EOMONTH(B1, 0)2026-01-31
C2=EOMONTH(B2, 1)2026-02-28
D2=EOMONTH(C2, 1)2026-03-31

Chaining EOMONTH off the prior cell keeps every header on its true month end.

How analysts use them in models

Clean, formula-driven dates are the backbone of a maintainable model timeline.

Pitfalls to watch

A raw EOMONTH or EDATE result looks like a five digit number until you apply date formatting. The value is correct; only the display is missing the format.

EDATE preserves the day of the month, so chaining it off a 31st can drift. Starting at 2026-01-31 and adding 1 gives 2026-02-28, and adding another gives 2026-03-28, not 2026-03-31. Use EOMONTH when you specifically want month ends.

Typing a date as a text string inside the function, such as =EOMONTH("Jan 2026", 0), is fragile across regional settings. Reference a real date cell instead so the timeline does not break on another machine.

Do it in one click

Formula Trace

Formula Trace shows which cell feeds an EOMONTH header so you can follow a timeline back to the single start date that drives it.

Get ModelMint See how it works

FAQ

What does EOMONTH do in Excel?

EOMONTH returns the last day of the month a chosen number of months from a start date. =EOMONTH(start, 0) gives the end of the start month, and =EOMONTH(start, 1) gives the end of the next month.

What is the difference between EOMONTH and EDATE?

EOMONTH always returns a month end date, while EDATE returns the same day of the month a set number of months away. Use EOMONTH for period headers and EDATE for anniversaries.

Why does EOMONTH show a number instead of a date?

Both functions return a date serial number. Apply a date number format to the cell, such as mmm-yy or yyyy-mm-dd, and the serial number will display as a readable date.