ExcelReady
CourseFunction guidesBlog
Start freeStart learning for free
ExcelReady

Be Excel-ready before the interview. Hands-on practice in your browser, with instant feedback.

Learn

  • Course
  • Function guides
  • Blog

Product

  • Certificate

Company

  • Editorial policy
  • Contact
  • Terms
  • Privacy

© 2026 ExcelReady. All rights reserved.

  1. Blog
  2. Dates
  3. EDATE and EOMONTH: Add Months and Find Month-End

EDATE and EOMONTH: Add Months and Find Month-End

By ExcelReady Team·Updated October 30, 2026·6 min read

The short answer

EDATE moves a date by whole months: =EDATE(start_date, months) keeps the day where it can, so Mar 15 plus 12 months is Mar 15 next year. EOMONTH moves by months and then jumps to the month's last day: =EOMONTH(B2,0) is the end of B2's month. Negative months go backwards.

Key takeaways

  • EDATE(start_date, months) returns the same day a number of months away, or the month's last day if that day doesn't exist.
  • EOMONTH(start_date, months) returns the last day of the month a number of months away; 0 means the same month.
  • EOMONTH(B2,0)+1 is the first day of next month; EOMONTH(B2,-1)+1 is the first day of this month.
  • DAY(EOMONTH(B2,0)) gives the number of days in the month, including 29 in a leap-year February.
  • Both return serial numbers, so format the cells as dates.
On this page+
  1. What do EDATE and EOMONTH do?
  2. How to add months to a date with EDATE
  3. How to use Excel EOMONTH to find the end of the month
  4. How to find the first day of the month
  5. How to count the days in a month
  6. How to find the end of the quarter
  7. What are the common EDATE and EOMONTH mistakes?
  8. What to do with the dates next
  9. Practise it

Excel EOMONTH finds the last day of a month, and EDATE adds or subtracts whole months. Together they handle renewal dates, payment due dates, month-end reports and "first day of next month" questions. This guide shows how each works, the patterns interviewers like to ask about, and the month-length traps that catch people who add days instead.

What do EDATE and EOMONTH do?#

Both move a date by a number of whole months. The difference is where they land:

FunctionSyntaxLands onJan 31, 2024 plus 1 month
EDATE=EDATE(start_date, months)The same day of the monthFeb 29, 2024
EOMONTH=EOMONTH(start_date, months)The last day of the monthFeb 29, 2024

They agree here only because January 31 is itself a month-end. From Mar 15, 2024, EDATE with 1 month gives Apr 15, and EOMONTH gives Apr 30.

Both return a date serial number, the number Excel uses to store a date. If you see something like 45351, the value is right; apply a date format with Ctrl+Shift+# (Windows) or Control+Shift+# (Mac). How the date then looks, such as 2/29/2024 or 29/02/2024, depends on your regional settings.

How to add months to a date with EDATE#

Use EDATE for anything "a number of months later": renewals, probation periods, payment terms. It handles months of different lengths for you:

Excel formula
=EDATE(B2,C2)
ClientStart DateTerm (Months)Renewal =EDATE(B2,C2)
Northwind LabsJan 31, 20241Feb 29, 2024
Bluefin MediaMar 15, 202412Mar 15, 2025
Cedar HealthMay 6, 20246Nov 6, 2024
Harbor FoodsOct 3, 20243Jan 3, 2025
Summit LegalNov 29, 202412Nov 29, 2025

Look at Northwind. February 2024 has no 31st, so EDATE stops at the last day of February. Adding 30 days instead, =B2+30, gives March 1, and the error grows with every month you add.

Two more details:

  • Negative months go backwards. =EDATE(B2,-6) is six months earlier.
  • Decimals are cut off. =EDATE(B2,1.9) adds 1 month, not 2.

A contract that starts on Mar 15 usually ends the day before its renewal: =EDATE(B2,C2)-1 gives Mar 14 of the next year.

How to use Excel EOMONTH to find the end of the month#

EOMONTH moves a number of months and then jumps to that month's last day. The months argument is required, and 0 means "this month":

Excel formula
=EOMONTH(B2,0)
Start Date=EOMONTH(B2,0)=EOMONTH(B2,1)=EOMONTH(B2,-1)
Jan 31, 2024Jan 31, 2024Feb 29, 2024Dec 31, 2023
Mar 15, 2024Mar 31, 2024Apr 30, 2024Feb 29, 2024
Nov 29, 2024Nov 30, 2024Dec 31, 2024Oct 31, 2024

Finance teams use this for month-end close dates and "due at the end of next month" terms. It's also the cleanest end point for monthly totals: "<="&EOMONTH(F5,0) in SUMIFS covers the whole month without you knowing how many days it has. See how to sum values between two dates.

How to find the first day of the month#

There's no "start of month" function, but EOMONTH gets you there in one step. Find a month-end and add 1 day:

GoalFormulaResult for Mar 15, 2024
First day of next month=EOMONTH(B2,0)+1Apr 1, 2024
First day of this month=EOMONTH(B2,-1)+1Mar 1, 2024
First day of last month=EOMONTH(B2,-2)+1Feb 1, 2024

Adding 1 works because dates are numbers that count days. The "first day of next month" formula is a classic interview question, because it's short and works for every month length.

How to count the days in a month#

Wrap EOMONTH in DAY. The last day's number is the number of days in that month:

Excel formula
=DAY(EOMONTH(B2,0))

For any date in February 2024 this gives 29, because 2024 is a leap year. For February 2025 it gives 28, and for April it gives 30. This is handy for daily averages, like =C2/DAY(EOMONTH(B2,0)) for a monthly total spread over its days.

How to find the end of the quarter#

Quarters end in March, June, September and December. This formula works out how many months away the quarter-end is, then lets EOMONTH do the rest:

Excel formula
=EOMONTH(B2,MOD(3-MONTH(B2),3))

For Feb 10, 2024 it gives Mar 31, 2024. For May 6, 2024 it gives Jun 30, 2024. MONTH and the other date-part functions are explained in DATE, YEAR, MONTH and DAY in Excel.

What are the common EDATE and EOMONTH mistakes?#

MistakeWhat happensFix
=B2+30 for "one month later"Drifts off the right day=EDATE(B2,1)
=EOMONTH(B2) with no monthsExcel won't accept itAdd ,0
EDATE from a month-end, like Feb 29 plus 1Mar 29, not Mar 31Use EOMONTH for month-ends
Result shows as 45351It's a serial numberApply a date format
Start date stored as text#VALUE!Convert it to a real date

The month-end trap is worth remembering. If your dates are always month-ends, like payroll or billing dates, use EOMONTH(B2,1) to step forward. EDATE keeps the day number, so if each date is built from the one before, it can drift from the 31st down to the 29th and stay there.

What to do with the dates next#

Once you have renewal or due dates, the next questions are usually about the calendar:

  • Does it land on a weekend? Use WEEKDAY. See how to find weekends and day names.
  • How many working days until then? Use NETWORKDAYS. See NETWORKDAYS and WORKDAY.
  • How long has a customer or employee been with you? See how to calculate age or years of service.

Practise it#

Try the days-in-month exercise on this page, then practise EDATE, EOMONTH and WEEKDAY in a live spreadsheet. You'll find renewal dates, month-ends and next-month starts for real contracts, then check which renewals fall on a weekend.

Try it yourself

This is a live spreadsheet. Type the formula in the green cell and press Enter.

How many days are in each month? EOMONTH finds the month's last day, and DAY reads its day number. In C2, type =DAY(EOMONTH(B2,0)) and press Enter. 2024 is a leap year, so February has 29 days.

fx
ABCD
1
Invoice
Invoice Date
Days in Month
2
INV-301
45332
3
INV-302
45702
4
INV-303
45750
5
INV-304
45992
6
7
8

Tip: Work from the inside out: EOMONTH(B2,0) is the last day of B2's month, and DAY of that date is the number of days.

Practise this in a lesson

LessonRenewals and month-ends: EDATE, EOMONTH, WEEKDAYShift dates by whole months with EDATE, jump to month-end with EOMONTH, and find the day of the week with WEEKDAY.

Frequently asked questions

How do I add months to a date in Excel?

+

Use EDATE: =EDATE(B2,3) is three months after the date in B2. Adding 30 or 90 days instead drifts, because months have different lengths.

How do I get the last day of the month in Excel?

+

Use =EOMONTH(B2,0). The 0 means the same month as B2. Use 1 for the end of next month, or -1 for the end of last month.

How do I get the first day of the month?

+

Use =EOMONTH(B2,-1)+1. It finds the end of last month and adds one day. =EOMONTH(B2,0)+1 gives the first day of next month.

Why does EOMONTH show a number like 45322?

+

EOMONTH returns a date serial number, and the cell has the General format. Apply a date format with Ctrl+Shift+# or from the Home tab.

How do I subtract months from a date?

+

Use a negative number of months: =EDATE(B2,-6) is six months before B2, and =EOMONTH(B2,-1) is the last day of the previous month.

Sources

  • EOMONTH function - Microsoft Support
  • EDATE function - Microsoft Support

Written and checked by the ExcelReady Team. First published October 30, 2026. The practice exercise runs in the same formula engine as our lessons. Found a mistake? Read our editorial policy or email hello@excelready.app.

On this page

  1. What do EDATE and EOMONTH do?
  2. How to add months to a date with EDATE
  3. How to use Excel EOMONTH to find the end of the month
  4. How to find the first day of the month
  5. How to count the days in a month
  6. How to find the end of the quarter
  7. What are the common EDATE and EOMONTH mistakes?
  8. What to do with the dates next
  9. Practise it

Keep reading

Dates· 6 min read

Count Working Days With NETWORKDAYS and WORKDAY

NETWORKDAYS counts the working days (Monday to Friday) between two dates, including both dates: =NETWORKDAYS(start_date, end_date, [holidays]). WORKDAY does the reverse and returns the date a number of working days away: =WORKDAY(start_date, days, [holidays]). Both skip weekends, and both skip any dates you list as holidays.

Dates· 6 min read

Calculate Age or Years of Service in Excel

To calculate age in Excel, use =DATEDIF(B2,TODAY(),"Y"), where B2 is the birth date. It counts complete years, so the age only goes up on the birthday. Years of service work the same way with the hire date. For a report that must not change, replace TODAY() with a fixed "as of" date cell.

Dates· 6 min read

WEEKDAY in Excel: Find Weekends and Day Names

The Excel WEEKDAY function returns the day of the week as a number: =WEEKDAY(date) gives 1 for Sunday through 7 for Saturday. Add a return type of 2, as in =WEEKDAY(date,2), to make Monday 1 and Sunday 7. Then =WEEKDAY(date,2)>5 is TRUE only for Saturdays and Sundays.

Don't just read about Excel. Do it.

Practise real formulas in a live spreadsheet with instant feedback. The first lessons are free, with no download.

Start learning for free