While working with Excel, we are able to determine the last day of the month of any future or past date by using the EOMONTH function. This function is especially useful when determining maturity or due dates. This tutorial will assist all levels of Excel users in getting the last day of the month for any specified date.
Figure 1. Final result: Get last day of month
Syntax of EOMONTH Function
EOMONTH adds or subtracts a certain number of months before or after a specified date and returns a date falling on the last day of the month
- start_date – a date representing the start date; can be a date enclosed in quotation marks or a cell reference
- months – the number of months either before or after the start date; a positive value results to a future date while a negative value results to a past date
- If months is not an integer, the truncated value is used by the function
- The date must be between January 1, 1900 and December 31, 9999
- If start_date is not a valid date, EOMONTH returns the #VALUE! error
Setting up our Data
Our table contains three columns: Start Date (column B), Months (column C) and Last day of month (column D). We want to add or subtract the number of months in column C from the start date in column B and return the last day of the month of the resulting date. The results will be recorded in column D.
Figure 2. Sample data to get last day of month
Determine last day of month using EOMONTH
We want to determine the last day of the month resulting from the start date and given number of months by using the EOMONTH function. Let us follow these steps:
Step 1. Select cell D3
Step 2. Enter the formula:
Step 3. Press ENTER
Step 4: Copy the formula in cell D3 to cells D4:D10 by clicking the “+” icon at the bottom-right corner of cell D3 and dragging it down
For our first example in row 3, the number of months is zero “0”. Hence, the EOMONTH function returns the same month as the start date, but falling on the last day. As a result, the value in D3 is “1/31/2019”.
In row 4, the start date is 1/31/2019, which is already the last day of January. Setting the number of months to zero “0” yields the same result as the start date. The result in cell D4 is also “1/31/2019”.
Figure 3. Getting last day of the same month using EOMONTH function
In row 5, the number of months is “1” and adding one month to January yields February. Hence, the last day of month resulting from the EOMONTH function is “2/28/2019”, which is the last day of February 2019.
Figure 4. Getting last day of month for future dates using EOMONTH function
For our next example, the number of months is 1.5, which is not an integer. EOMONTH truncates this value and interprets the number of months as 1. As a result, the date in cell D6 is “2/28/2019”, which is one month from our start date, and falling on the last day of the month of February.
Figure 5. EOMONTH truncates non-integer values for months
We can also determine the last day of month for past dates by using the EOMONTH function with negative values for the number of months, as shown in the next example. The value -3 means three months before the start date. Finally, our formula returns “11/30/2018” in cell D8, which falls on the last day of November in the previous year 2018.
Figure 6. Getting last day of month for past dates using EOMONTH function
The EOMONTH function returns the error #VALUE! when the start date is invalid. In cell B9, the date “2/29/2019” is not valid because it does not exist. The last day of the month of February in 2019 is 28, not 29.
Cell B10 containing “3/14/1888” is also invalid because the EOMONTH function only allows dates between January 1, 1900 and December 31, 9999.
Figure 7. EOMONTH returns an error for invalid start dates
Most of the time, the problem you will need to solve will be more complex than a simple application of a formula or function. If you want to save hours of research and frustration, try our live Excelchat service! Our Excel Experts are available 24/7 to answer any Excel question you may have. We guarantee a connection within 30 seconds and a customized solution within 20 minutes.