Returns the date a given number of working days away, skipping weekends and any holidays you list.
WORKDAY answers "ten working days from now". Adding 10 to a date gives you ten calendar days, which lands on a Saturday often enough to matter; WORKDAY steps over weekends and, if you give it a list, over public holidays too.
The holiday list is the argument that makes it genuinely useful and the one most people skip. Put your organisation's holidays in a range, point the third argument at it, and every SLA date, delivery estimate and deadline in the workbook accounts for them at once. Without it you get weekend-aware but holiday-blind answers.
It assumes Saturday and Sunday are the weekend. Where that is not true — much of the Middle East, or a six-day operation — WORKDAY.INTL takes an extra argument naming which days to treat as the weekend. NETWORKDAYS is the counterpart that counts working days between two dates rather than projecting forward from one.
=WORKDAY(start_date, days, [holidays])start_datedaysholidaysHeaders in row 1, data in A2:C5. Columns B and C hold real dates.
| A | B | C | |
|---|---|---|---|
| 1 | Project | Start | Due |
| 2 | Warehouse move | 2024-01-15 | 2024-04-30 |
| 3 | Site survey | 2024-02-01 | 2024-02-14 |
| 4 | Fit-out | 2024-03-11 | 2024-09-01 |
| 5 | Handover | 2024-08-19 | 2024-10-07 |
=WORKDAY(B2, 10)Result: 2024-01-29
Ten working days after 15 January. Fourteen calendar days, because two weekends fall inside.
=WORKDAY(B2, -5)Result: 2024-01-08
Counting backwards, for a task that has to finish five working days before a start date.
=WORKDAY(B2, 10, $F$2:$F$10)Result: 2024-01-30
The same span with a holiday list. One holiday inside the window pushes the answer out by a day.
=NETWORKDAYS(B2, C2)Result: 77
The reverse question: how many working days lie between two dates you already have.
Reading about a formula is not the same as writing one. Open this function's exercise and type it into a real grid — you get instant feedback on exactly which cell is wrong and why.
Why it happens: It returns a date serial and the cell is formatted as General.
How to fix it: Format the cell as a date.
Why it happens: One of the dates is text, or the holidays range contains something that is not a date.
How to fix it: Check the holiday range holds real dates. A stray header row inside the range is the usual culprit.
Why it happens: The days argument is not a number, or the result falls outside Excel's date range.
How to fix it: Whole numbers only; decimals are truncated rather than rejected, which can hide a mistake.
Why it happens: WORKDAY hardcodes Saturday and Sunday.
How to fix it: Use WORKDAY.INTL, whose third argument names the weekend — 7 means Friday and Saturday, for example.
List them in a range and pass it as the third argument: =WORKDAY(A2, 10, $F$2:$F$20). Keep that range on a separate sheet so every formula in the workbook shares one list, and lock it with $ before filling down.
WORKDAY takes a start date and a number of days and returns a date. NETWORKDAYS takes two dates and returns how many working days are between them. One projects, the other counts.
Use WORKDAY.INTL, which adds a weekend argument. Pass a code — 7 for Friday and Saturday — or a seven-character string of 0s and 1s where 1 marks a non-working day, starting from Monday.
Longer reads where this function does real work in a real sheet.