Arte SheetsLearn. Try. Understand.

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 offsetMonth-end date1900 serial
14 February 2026 (46067)028 February 202646081
14 February 2026 (46067)131 March 202646112
14 February 2026 (46067)-131 January 202646053

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.

Further reading