EDATE function
EDATE moves a date by a whole number of months and keeps its day of the month: =EDATE(A2,3) is three months after A2. When the new month is too short for that day, you get its last day.
Available in Excel 2007 and later, Excel for the web and Google SheetsKey takeaways
- =EDATE(start_date, months) moves a date that many months on, or back with a negative number, and keeps its day of the month when the new month has that day.
- A day the new month doesn't have becomes its last day: 31 January plus one month is 28 February, or 29 February in a leap year.
- For years, multiply by 12: =EDATE(A2,B2*12).
- Format the result as a date, or it shows as a serial number.
On this page
EDATE syntax
=EDATE(start_date, months)| Argument | Required | What it means |
|---|---|---|
start_date | Yes | The date to start from: a cell holding a date, or DATE(2026,1,15). Text that isn't a date gives #VALUE!. |
months | Yes | How many months to move: positive goes forward, negative goes back. A decimal part is dropped. |
Examples
When a contract ends
Twelve months after 15 January 2026 is 15 January 2027.
| Row | A | B | C |
|---|---|---|---|
| 1 | Start | Months | Ends |
| 2 | 15 Jan 2026 | 12 | 15 Jan 2027 |
=EDATE(A2,B2) → 15 Jan 2027Count back from a date
A negative number goes back: notice is due two months before the renewal date.
| Row | A | B |
|---|---|---|
| 1 | Renewal | Notice from |
| 2 | 30 Sept 2026 | 30 Jul 2026 |
=EDATE(A2,-2) → 30 Jul 2026The 31st of a short month
February 2026 has no 31st, so EDATE returns its last day, 28 February. Adding 31 days instead would land in March.
| Row | A | B |
|---|---|---|
| 1 | Start | One month on |
| 2 | 31 Jan 2026 | 28 Feb 2026 |
=EDATE(A2,1) → 28 Feb 2026The day before a date months away
Six months from 1 April is 1 October, so a probation that starts on 1 April ends the day before, on 30 September.
| Row | A | B |
|---|---|---|
| 1 | Starts | Probation ends |
| 2 | 1 Apr 2026 | 30 Sept 2026 |
=EDATE(A2,6)-1 → 30 Sept 2026Practise it
New data, so you can't copy the answer above. We check the number your formula returns, then change the data to make sure it still holds.
Your task: In C2, return the day the warranty expires: the purchase date in A2 plus the number of years in B2.
Graded live| Row | A | B | C |
|---|---|---|---|
| 1 | Bought | Years | Expires |
| 2 | 14 Mar 2026 | 2 |
Write the formula in the bar above, then press Check or Enter.
Hint
EDATE takes the date and a number of months: A2, and B2 years times 12.
Solution
=EDATE(A2,B2*12) Any formula that returns the same result passes.
Common mistakes
- Giving years instead of months. =EDATE(A2,2) is two months on, not two years. Multiply years by 12.
- Adding 30 days for a month. Months have 28 to 31 days, so +30 drifts away from the day you started on. EDATE keeps the day of the month, or gives the last day of a month too short for it.
- Expecting it to keep month ends. EDATE keeps the day, not the month end: =EDATE(DATE(2026,2,28),1) is 28 March, not 31 March. For month ends, use EOMONTH.
- A result that shows as a number. EDATE returns a serial number. Format the cell as a date.
FAQ
What's the difference between EDATE and EOMONTH?
EDATE keeps the day of the month when it can: 15 March becomes 15 April, and 31 March becomes 30 April. EOMONTH always returns the last day of the month it lands in: 15 March becomes 30 April.
Can EDATE subtract months?
Yes. A negative number of months goes back: =EDATE(A2,-6) is six months before A2.
How do I add years to a date?
=EDATE(A2,B2*12) with the years in B2, or =DATE(YEAR(A2)+B2,MONTH(A2),DAY(A2)). For whole years they differ only on 29 February: EDATE gives 28 February in a year without one, while DATE runs on to 1 March.
Know EDATE? Prove it on a real sheet.
Practise EDATE and the functions around it in a live grid that grades your result and explains your mistakes.
Runs in your browser · Graded on your result · No install