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.

MethodBest ForMonth-End Behavior
EDATEMost date-shifting tasksSnaps to last valid day
EOMONTHLanding on end-of-monthAlways returns month end
DATE/MONTHCustom logic and controlRolls over to next month
Adding daysDay-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:

  1. Selecting the result cell
  2. Going to Home → Number Format
  3. Choosing Short Date or Long Date

Alternatively, right-click the cell → Format CellsDate 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:

  1. Enter =EDATE(A2, 1) in B2
  2. Press Enter
  3. 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.