Dates and time

Excel WORKDAY Function: Add Working Days to a Date

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.

Syntax

=WORKDAY(start_date, days, [holidays])

Arguments

start_date
Required
The date to count from. It is not itself counted, so one working day from a Monday is the Tuesday.
days
Required
How many working days to move. Negative values count backwards, which is how you find a date by which something must start.
holidays
Optional
A range of dates to skip in addition to weekends. Anything already falling on a weekend is not double-counted.

The example data

Headers in row 1, data in A2:C5. Columns B and C hold real dates.

ABC
1ProjectStartDue
2Warehouse move2024-01-152024-04-30
3Site survey2024-02-012024-02-14
4Fit-out2024-03-112024-09-01
5Handover2024-08-192024-10-07

Worked examples

=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.

Now practise it

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.

Open the exercise: WORKDAY Function

Common errors and how to fix them

Result shows as 45320

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.

#VALUE!

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.

#NUM!

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.

Weekend is wrong for the region

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.

Tips worth knowing

  • Lock the holidays range with absolute references before filling down, or each row will look at a shifted list.
  • NETWORKDAYS counts working days between two dates; WORKDAY projects forward from one. They take holidays the same way.
  • NETWORKDAYS counts both endpoints, so a Monday-to-Monday span returns 6, not 5.
  • Keep the holiday list on its own sheet and name the range — every formula then reads the same list and updates together.

Frequently asked questions

How do I exclude public holidays?

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.

What is the difference between WORKDAY and NETWORKDAYS?

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.

How do I handle a weekend that is not Saturday and Sunday?

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.

Related functions

Guides that use it

Longer reads where this function does real work in a real sheet.