Formula Guide

The Excel EDATE Function
explained simply

EDATE moves a date forward or backward by exact calendar months, always landing on the same day number. Essential for subscription renewals and contract dates.

ExcelPro · 6 min read · Updated June 2026

What does it do?

EDATE adds or subtracts a number of complete calendar months from a date, landing on the same day number in the target month. Use it for recurring monthly dates — subscription renewals, annual review dates, loan repayment schedules, and contract start and end dates.

Syntax

=EDATE(start_date, months)
ArgumentDescription
=EDATE(start_date, months)
start_date requiredThe starting date.
months requiredNumber of months to add (positive) or subtract (negative).

Real examples

Example 1
Renewal date 12 months later
=EDATE(A2, 12)

Annual subscription or contract renewal.

Example 2
Next monthly review date
=EDATE(A2, 1)

Exactly one month after the last review.

Example 3
Contract expiry 3 years from start
=EDATE(A2, 36)

Three years exactly from start date.

Example 4
Date 6 months ago
=EDATE(TODAY(), -6)

Look back 6 months from today.

Example 5
Probation end date
=EDATE(A2, 3)

Three months from start date — standard probation period.

FAQ

What happens if the day doesn't exist in the target month?
EDATE adjusts to the last day of the month. EDATE(DATE(2026,1,31),1) returns 28 Feb 2026, not 31 Feb.
What is the difference between EDATE and simply adding 30?
Adding 30 moves exactly 30 days forward — not the same month next month. EDATE always lands on the equivalent date in the target month, handling months of different lengths correctly.
How do I find the date exactly one year ago?
=EDATE(TODAY(),-12) returns the same date one year ago.

EDATE in subscription and contract management

EDATE is the standard formula for any recurring date calculation. When you sign a 12-month contract starting 31 January 2026, the end date is 31 January 2027 — not 365 days later (which lands on 31 January 2027 only in non-leap years) and not a fixed number of days. EDATE handles this correctly by landing on the same calendar date regardless of month length.

For subscription management, a helper column of EDATE(start,1), EDATE(start,2), EDATE(start,3) etc. builds out every renewal date automatically. Combine with NETWORKDAYS to check whether the renewal falls on a working day and WORKDAY to shift it if not.

One edge case to know: EDATE(DATE(2026,1,31),1) returns 28 February 2026, not 31 February (which doesn't exist). Excel adjusts to the last valid day of the month. This is usually the correct behaviour for financial contracts but worth flagging to clients when it applies.

💡 Difference between EDATE and adding 30

Adding 30 days to 31 January gives 2 March — not end of February. EDATE(DATE(2026,1,31),1) gives 28 February — the correct "one month later" for monthly recurring billing. Always use EDATE for calendar-month calculations.

Practise this formula live

ExcelPro has exercises covering this formula across multiple tracks. Free to start.

Try exercises →

Related formulas

EOMONTH WORKDAY DATEDIF NETWORKDAYS TODAY TEXT