Chapter 12 · advanced · 6 min
Dates II: business days, deadlines, and ages
The serial-number chapter covered the model and the arithmetic that follows from it. This chapter is the four functions built on top of that model that show up constantly in ops and finance scenarios: how many working days between two dates, what date is N working days from now, how many full years/months/days between two dates, and which day of the week a date falls on.
We'll work with one AirAsia-style booking row throughout: a booking date and a departure date.
The grid
A1 holds a booking date, B1 a departure date, both as real dates (2026-01-05 and 2026-02-16).
NETWORKDAYS: counting only weekdays
B1-A1 counts every calendar day, weekends included. NETWORKDAYS(start, end) counts only Monday-Friday between the two dates, inclusive of both ends.
2026-01-05 is a Monday, 2026-02-16 is a Monday six weeks later. Roughly how many weekdays span that range?
| A | B | |
|---|---|---|
| 1 | 2026-01-05 | 2026-02-16 |
| 2 | =TEXT(A1,"yyyy-mm-dd")&" to "&TEXT(B1,"yyyy-mm-dd")&": "&NETWORKDAYS(A1,B1)&" weekdays" | |
| 3 | ||
| 4 |
WORKDAY: N working days from a date
WORKDAY runs the other direction: given a start date and a number of working days to add, it returns the resulting date, skipping weekends automatically.
=WORKDAY(A1,10)A negative second argument counts backward — useful for "what's the latest day I could start this task to finish 10 working days before the deadline".
A1 is Monday 2026-01-05. Counting only weekdays, what date lands 10 working days later?
| A | B | |
|---|---|---|
| 1 | 2026-01-05 | 2026-02-16 |
| 2 | ||
| 3 | =TEXT(WORKDAY(A1,10),"yyyy-mm-dd") | |
| 4 |
DATEDIF: age in whole years, months, or days
DATEDIF(start, end, unit) returns a whole-unit difference — "y" for complete years, "m" for complete months, "d" for total days. It's the function behind every "how many years/months since X" calculation, and notably absent from Excel's own function-insert dialog despite being fully supported.
=DATEDIF(A1,B1,"m")Complete months between booking and departure
In A4, return the number of complete months between the booking date (A1) and the departure date (B1).
| A | B | |
|---|---|---|
| 1 | 2026-01-05 | 2026-02-16 |
| 2 | ||
| 3 | ||
| 4 |
WEEKDAY, and the trap of DATEDIF's argument order
WEEKDAY(A1) returns a number 1-7 for the day of the week (Sunday=1 by default). It's simpler than the other three but easy to skip past — useful for flagging weekend bookings without a full NETWORKDAYS call.
The real trap is DATEDIF's argument order: it requires start_date before end_date and returns #NUM! if you pass them backward — unlike B1-A1, which happily returns a negative number when the dates are swapped. A #NUM! from DATEDIF almost always means the two dates were passed in the wrong order, not that the function is broken.