How to Add a Month to a Date in Excel
Adding a month to a date sounds simple — until you realize that months have different lengths, and a naive approach like adding 30 days can quietly send your spreadsheet off the rails. Excel has a dedicated function for this, plus a few alternatives depending on exactly what you're trying to do.
Why You Can't Just Add 30 (or 31) Days
Excel stores dates as serial numbers — January 1, 1900 is 1, January 2 is 2, and so on. That means adding the number 30 to a date cell literally moves the date forward 30 days, not one calendar month.
Add 30 days to January 31 and you land on March 2 (or March 1 in a leap year). Add 30 days to February 1 and you land on March 3. These results are inconsistent and, in most business contexts, wrong.
For accurate month arithmetic, you need a function that understands calendar structure.
The Core Solution: EDATE
EDATE is Excel's purpose-built function for shifting a date by a whole number of months.
Syntax:
=EDATE(start_date, months) start_date— the original date (a cell reference or date value)months— how many months to move forward (positive) or backward (negative)
Example:
=EDATE(A2, 1) If A2 contains January 15, 2025, this returns February 15, 2025. One month forward, same day of the month.
Adding multiple months is just as straightforward:
=EDATE(A2, 3) This moves the date forward by three months.
Subtracting months uses a negative value:
=EDATE(A2, -2) ⚠️ One Thing to Know About End-of-Month Dates
EDATE handles month-end dates by snapping to the last valid day. If your start date is January 31 and you add one month, EDATE returns February 28 (or 29 in a leap year) — not an error, and not March 3. Whether that behavior works for your use case is worth checking against your data.
EOMONTH: When You Want the Last Day of the Month
If your goal is to land on the last day of a future month — useful for billing cycles, subscription expirations, or payment due dates — EOMONTH is the right tool.
Syntax:
=EOMONTH(start_date, months) Example:
=EOMONTH(A2, 1) Regardless of what day A2 falls on, this returns the last day of the following month. January 5, January 15, January 31 — all return February 28 (or 29).
To get the last day of the current month:
=EOMONTH(A2, 0) DATE + YEAR/MONTH/DAY: The Manual Method
Some users prefer building the result date from scratch using Excel's DATE, YEAR, MONTH, and DAY functions. This gives you more granular control but requires more formula complexity.
Example — Add 1 month manually:
=DATE(YEAR(A2), MONTH(A2)+1, DAY(A2)) This takes the year, month, and day components of A2 separately, increments the month by 1, and reassembles the date.
What Excel does with overflow: If MONTH(A2)+1 produces 13, Excel automatically rolls over to January of the next year. That's correct behavior — but if the day doesn't exist in the target month (e.g., adding one month to March 31 targets April 31), Excel rolls that over too, landing on May 1. This is different from EDATE's end-of-month snapping behavior.
| Method | Best For | Month-End Behavior |
|---|---|---|
EDATE | Most date-shifting tasks | Snaps to last valid day |
EOMONTH | Landing on end-of-month | Always returns month end |
DATE/MONTH | Custom logic and control | Rolls over to next month |
| Adding days | Day-count math (e.g., +7 for one week) | Not recommended for months |
Formatting the Result
EDATE and EOMONTH return serial numbers. If your result cell shows something like 45698 instead of a date, the cell isn't formatted as a date.
Fix it by:
- Selecting the result cell
- Going to Home → Number Format
- Choosing Short Date or Long Date
Alternatively, right-click the cell → Format Cells → Date and pick your preferred format.
Using EDATE Across a Column 📅
If you have a list of dates in column A and want to shift all of them forward by one month into column B:
- Enter
=EDATE(A2, 1)in B2 - Press Enter
- Click B2 again and drag the fill handle down
Excel adjusts the row reference automatically for each row.
If you want the months value to come from a cell (so you can change it in one place):
=EDATE(A2, $C$1) Where C1 holds the number of months to add. The dollar signs lock that reference so it doesn't shift when you drag the formula down.
When the Function Isn't Available
In older versions of Excel (pre-2007), EDATE required the Analysis ToolPak add-in to be enabled. In Excel 2007 and later — including Microsoft 365 — EDATE and EOMONTH are built in with no add-in needed. Google Sheets also supports both functions with identical syntax.
The Variables That Shape Your Approach
Which method works best depends on factors specific to your spreadsheet:
- What "one month later" means in your context — same day next month, or always the last day of the month
- How your data handles month-end dates — does February 28 vs. March 1 matter to your calculations?
- Whether you're working in Excel, Google Sheets, or another tool — syntax is largely consistent, but edge cases can differ
- How much formula flexibility you need — EDATE is cleaner, but DATE/MONTH combinations let you modify individual components independently
The right choice isn't about which function is more advanced — it's about what your dates actually represent and what the output needs to mean.