EDATE

Move a date forward or backward a number of months, clamping to the month's end.

Syntax

EDATE(start_date, months)
Argument Required Description
start_date Required The date to shift.
months Required How many months. Negative goes backwards.

Examples

Every example below was executed against VisiGrid engine 0.35.0 — not transcribed from another vendor's documentation. Reproduce any of them with vgrid calc.

Formula Result Notes
=EDATE(DATE(2024,1,31),1) 45351 31 January plus one month is 29 February, not 31 February.
=DAY(EDATE(DATE(2024,1,31),1)) 29
=EDATE(DATE(2024,3,15),-1) 45337 Negative months go backwards.

Why not just add 30 days

Because months are not 30 days, and the error compounds. Twelve additions of 30 days lands five days short of a year, which turns a payment schedule into a slowly drifting one.

EDATE moves by calendar months and clamps when the target month is shorter:

=EDATE(DATE(2024,1,31), 1)     → 29 February 2024

Not 2 March, and not an error. That is the behaviour a monthly billing date needs — though note it is not reversible. Shifting back a month from 29 February gives 29 January, not the 31st you started from.

Building a schedule

EDATE(start, ROW()-1) down a column produces successive monthly dates from one formula, each anchored to the original date rather than to the row above it. Anchoring to the start is what stops the drift.

Excel compatibility

Matches Excel, including clamping to the last day of a shorter month.

Related functions

Last updated