ShareYourGroupShareYourGroupExcel Formulas

Date and time functions

EDATE and EOMONTH functions in Excel

EDATE returns the date a number of months before or after a date; EOMONTH returns the last day of the month that many months away.

Months are awkward. They have 28, 29, 30 or 31 days, so "add a month" cannot be done by adding a fixed number of days. EDATE and EOMONTH do month arithmetic properly. They are the functions behind due dates, renewal dates, EMI schedules and month-end reports.

Syntax

=EDATE(start_date, months)
=EOMONTH(start_date, months)
ArgumentWhat it is
start_dateThe date to start from.
monthsHow many months to move. Positive goes forward, negative goes back, 0 stays in the same month.

Examples

Each result below is what Excel itself showed for the formula on the sample sheet.

Sample sheet: Staff with their date of birth and date of joining, and a short list of holidays.
ABCD
1NameBornJoinedHoliday
2Anita19-Jul-198801-Apr-201926-Jan-2026
3Rohit30-Nov-199215-Jun-202004-Mar-2026
4Deepa29-Feb-199601-Sep-202115-Aug-2026
5Manoj05-Dec-199910-Jan-202202-Oct-2026

EDATE: the same day, some months away

EDATE moves a date by whole months and keeps the day of the month. 15 June plus one month is 15 July.

When the target month is too short for the day, EDATE returns the last day of that month. One month after 31 January is 28 February, or 29 February in a leap year. The fourth example shows this. Adding months with DATE would instead spill over into March.

For years, multiply by 12: =EDATE(A2,12*5) is five years on.

EOMONTH: the last day of a month

EOMONTH moves by months and then goes to the end of that month. The second argument works like this:

monthsResult
0last day of the same month
1last day of next month
-1last day of the previous month

Because the first day of a month is one day after the end of the month before, EOMONTH gives month starts too:

Format the result

Both functions return a date as a plain number. If you see something like 43739, the cell is not formatted as a date. Select it and choose a date format.

Uses

Due dates and renewals. A subscription that renews every three months: =EDATE(A2,3). A warranty of two years: =EDATE(A2,24).

A schedule of monthly instalments. Put the first date in A2 and =EDATE(A2,1) below it, copied down. Each instalment falls on the same day of the next month.

Payment at month end. "Due at the end of the month after the invoice": =EOMONTH(A2,1).

Retirement and milestone dates. The 60th birthday is =EDATE(B2,12*60). Many employers retire staff on the last day of that month: =EOMONTH(B2,12*60).

A month's range for SUMIFS. With any date of the month in H1, the total for that month is =SUMIFS(amounts, dates, ">="&EOMONTH(H1,-1)+1, dates, "<="&EOMONTH(H1,0)).

Days in a month. =DAY(EOMONTH(A2,0)) returns 28, 29, 30 or 31, and takes care of leap years.

Months elapsed in the financial year. With April as the start, EDATE and EOMONTH give period ends without a lookup table.

Months between two dates

EDATE adds months. To count the months between two dates, use DATEDIF with the unit "M".

Common mistakes

In Google Sheets

EDATE and EOMONTH are the same in Google Sheets.

Related functions

Every result on this page was calculated in Microsoft Excel (version 16.0, build 20326) on 12 November 2026, not typed by hand.

This is an independent help site. It is not connected with or approved by Microsoft. Excel and Microsoft 365 are trademarks of Microsoft Corporation, named here only to say which program a formula is for. The people and figures in the sample sheets are made up.