Dates and reporting
EOMONTH function: find the last day of any reporting month
Calculate month-end closing dates from any mid-month transaction date, handling 28-day and 29-day Februaries as well as December-to-January year rollovers.
Turn a mid-month date into a period boundary
A workshop invoice dated 14 February 2026 (serial 46067 in B2) is due at the end of the current month (offset 0) or the end of the following month (offset 1). EOMONTH(start_date, months) jumps to the final calendar day of that target month.
| Reference date (B2) | Months offset | Month-end date | 1900 serial |
|---|---|---|---|
| 14 February 2026 (46067) | 0 | 28 February 2026 | 46081 |
| 14 February 2026 (46067) | 1 | 31 March 2026 | 46112 |
| 14 February 2026 (46067) | -1 | 31 January 2026 | 46053 |
Current month end, next month end, and first day of month
With C2 = 0, =EOMONTH(B2, C2) returns 46081 (28 February 2026). With C2 = 1 it returns 46112 (31 March 2026). Adding 1 day to the previous month’s end—EOMONTH(B2, -1) + 1—cleanly computes the first day of the current month (1 February 2026 = 46054).
=EOMONTH(B2,C2)Leap years and December year rollover
EOMONTH automatically accounts for leap years and year boundaries: EOMONTH(DATE(2024, 2, 10), 0) returns 29 February 2024 (serial 45351, day 29), and EOMONTH(DATE(2026, 12, 10), 1) rolls cleanly into 31 January 2027 (serial 46418).
Try the example
Use the original values or change them to test your understanding.