In Excel: use =EDATE(start_date, months) — it adds or subtracts whole months while keeping the same day number, clamping where the target month is shorter.
Syntax
Arguments
| Argument | Description | |
|---|---|---|
start_date | required | The reference date. |
months | required | Months to add. Negative values go backwards. |
Related functions
Negative values subtract. Month steps clamp the day, so 31 Jan + 1 month is 28 Feb.
Weekday: Saturday
Need it as an auditable file?
Ships inside the linked template — formula-driven, unlocked, audit-ready.
What this does
EDATE shifts a date by a number of months, keeping the day of the month the same. That sounds trivial until you try it by hand: adding one month to 31 January has no obvious answer, and EDATE clamps it to 28 or 29 February rather than rolling into March. Adding 30 days instead — the naive alternative — gives 2 March, which is wrong for a monthly subscription, a rent cycle or a contract term. Negative values go backwards, which is how you build a same-period-last-year comparison. Keep the inputs visible and clearly labelled and the whole thing stays auditable — anyone who opens the file later, including you, can see at a glance exactly what feeds the result and change one assumption without hunting through the formula. The difference between a quick fix and a sheet you can trust is the extra minute you spend validating “edate function in excel”. Start on a copy or a tiny sample, keep the affected formula visible, and compare the result with the tool above before you touch the real workbook. When a formula is involved, keep the inputs labelled beside it, reference cells instead of typing values, and apply number formatting only after the result checks out. The point is a calculation you can defend to a CFO or an auditor, but the practical win is that someone else can open the file and understand what happened without asking you.
A worked example
A subscription renewal three months out: =EDATE(A2, 3). The same month a year earlier for a year-on-year comparison: =EDATE(A2, -12). The clamping in action: =EDATE("2026-01-31", 1) returns 28 February 2026, not 3 March. A twelve-month schedule down a column: =EDATE($A$2, ROW()-1). EDATE keeps a monthly cycle aligned to its day of the month, which adding 30 days cannot do. A practical tip before you scale it up: build it once on a small block of test data, confirm the number against the tool on this page, and only then point it at your real sheet. That one habit catches almost every mistake while it is still cheap to fix, long before a wrong figure reaches a report or a colleague.
In Google Sheets
If you are in Google Sheets rather than Excel, the good news is that the formula shown here is identical and the workflow barely changes — menus sit across the top instead of in a ribbon, and a few function names differ slightly, but anything you build here moves across with little or no rework. The aim was to get you unstuck fast and leave you a little more capable than a copy-paste would. The answer is at the top, the tool proves it, and the detail above shows why it holds — so the next time a colleague asks, you can answer without reaching for search. Treat “edate function in excel” as a small building block rather than a chore. Once the inputs sit in their own cells and the formula reads from them, the same setup answers a dozen related questions with a tweak, and Excel keeps every dependent figure current as the data changes. The tool above is there so you can rehearse and verify before committing anything to a real workbook; the steps and worked example are there so the logic sticks. Get it right once and it stops costing you time — it starts saving it, every time the question comes back around.
Common mistakes
- Adding 30 days instead of using
EDATE, which drifts out of alignment within a few cycles. - Expecting 31 January plus one month to be 31 February;
EDATEclamps to the last valid day. - Using
EDATEwhere the requirement is a month END regardless of the start day — that isEOMONTH.
Frequently asked questions
How do I add months to a date?
=EDATE(A2, 3) adds three months and keeps the day number where the target month allows it.
What happens on 31 January plus one month?
You get 28 or 29 February. EDATE clamps to the last valid day rather than rolling into March.
How do I compare to the same month last year?
=EDATE(A2, -12) shifts back exactly twelve months.