EOMONTH returns a date serial number -- format the result cell as a date to display it correctly. The months argument shifts the target month: 0 stays in the same month as start_date, 1 moves to the next month, -1 moves to the previous month, and so on. The returned date is always the final day of the target month, so EOMONTH correctly handles 28, 29, 30, and 31-day months without any extra logic. To get the first day of a month, add 1 to the previous month's EOMONTH: =EOMONTH(A2,-1)+1 gives the first day of A2's month. This is cleaner than using
DATE(YEAR,MONTH,1) because it chains naturally with the EOMONTH result. For quarter-end dates, target months 2, 5, 8, or 11 ahead of a quarter-start date. EOMONTH handles the add-1 pattern for month-start dates and is the foundation for most of the date range calculations in financial and operational reporting. The date function is the closest companion for building dates from components when EOMONTH alone is not sufficient.