WORKDAY
WERKDAG in Dutch Excel
Returns the date that lies a number of working days after, or before, a start date, skipping weekends and any holidays you list.
Last updated: 13 October 2026
| Row | A | B | C | D |
|---|---|---|---|---|
| 1 | Invoice | Supplier | Invoice date | Due date |
| 2 | 26-0102 | Kabelgroothandel Smit | 2 Feb 2026 | 16 Feb 202616 Feb 2026=WORKDAY(C2, 10)=WORKDAY(C2; 10) |
| 3 | 26-0118 | Pijp & Fitting Aalbers | 12 Feb 2026 | |
| 4 | 26-0131 | Elektra Onderdelen Yilmaz | 20 Feb 2026 | |
| 5 | 26-0156 | Gereedschap Raman | 4 Mar 2026 |
Swipe sideways to see all columns
Result: 16 Feb 2026
=WORKDAY(C2,10)
=WORKDAY(C2;10)
What WORKDAY does and when to use it
What it does: it returns the date that lies a given number of working days from a start date, for example the due date 10 working days after an invoice date.
When to use it: for due dates, deadlines and test windows written in working days. Saturdays, Sundays and the holidays you list never count. For another weekend use WORKDAY.INTL, for the number of working days between two dates use NETWORKDAYS, and for a date a number of months away use EDATE.
How Excel evaluates it
Excel reads start_date as a serial number and ignores any time of day. It then steps one calendar day at a time, forward when days is positive and backward when it is negative, and counts a day only if it is a Monday to Friday and is not in holidays.
The start day is never counted, so day 1 is the first counted day after it. When the count reaches the size of days, the date of that last counted day is the result. With days at 0 there is nothing to count and the start date comes back as it is, even when it falls on a weekend.
Watch out: The start date itself is never counted, so day 1 is the first working day after it.
Mental model
Walking along a calendar, stepping over Saturdays, Sundays and marked holidays without counting them, and stopping on the day of your n-th counted step.
Terms used on this page: serial number, range
WORKDAY(start_date,days, [holidays])
WORKDAY(start_date;days; [holidays])
| Argument | Type | Meaning |
|---|---|---|
start_date | Required | The date to start from. |
days | Required | The number of working days to add; negative goes back. |
holidays | Optional | A range of dates to skip. |
Return value:A date (serial number): the day on which the working-day count is complete
Formulas use commas (,) between arguments, as in English Excel. Formulas use semicolons (;) between arguments, as in Dutch Excel. Formulas use commas (,) between arguments, as in English Excel; Dutch Excel uses semicolons (;).
Worked examples
Beginner
Due dates of purchase invoices, 10 working days
For Veldhuis Installatie BV you test whether suppliers were paid on time. All supplier agreements say payment is due 10 working days after the invoice date, so you recalculate the due date of each invoice in column D and compare it with the payment date in the bank file.
| Row | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Invoice | Supplier | Invoice date | Due date | |
| 2 | 26-0102 | Kabelgroothandel Smit | 2 Feb 2026 | 16 Feb 202616 Feb 2026=WORKDAY(C2, 10)=WORKDAY(C2; 10) | |
| 3 | 26-0118 | Pijp & Fitting Aalbers | 12 Feb 2026 | ||
| 4 | 26-0131 | Elektra Onderdelen Yilmaz | 20 Feb 2026 | ||
| 5 | 26-0156 | Gereedschap Raman | 4 Mar 2026 | ||
| 6 |
Swipe sideways to see all columns
Formula in D2
=WORKDAY(C2,10)
=WORKDAY(C2;10)
Result: 16 Feb 2026
Step by step
C2holds Monday Feb 2, 2026, serial number 46055. That is the start_date, and days is 10.- The start day is not counted. Tuesday Feb 3 is working day 1, Wednesday is 2, Thursday is 3 and Friday Feb 6 is 4.
- Saturday Feb 7 and Sunday Feb 8 are skipped. Monday Feb 9 is 5, Tuesday is 6, Wednesday is 7, Thursday is 8 and Friday Feb 13 is 9.
- The next weekend is skipped as well. Monday Feb 16 is working day 10, so the count is complete: the result is Feb 16, 2026, serial number 46069, which is 46055 + 14.
D2has a date format, so it shows 16 Feb 2026 instead of 46069. Copy down:26-0118(Thursday Feb 12) becomes Thursday Feb 26,26-0131(Friday Feb 20) becomes Friday Mar 6 and26-0156(Wednesday Mar 4) becomes Wednesday Mar 18.
Watch out: If an invoice date was imported as text, for example "02-02-2026" left-aligned in the cell, Excel usually reads it as a date according to the regional setting. The real risk is a silent swap of day and month ("02-03-2026" read as 3 February instead of 2 March), or text Excel cannot read, which returns #VALUE!. Convert the column to real dates first.
More on this example: why it works, 1 more pitfall, 2 variations
Why it works
WORKDAY counts working days, not calendar days, so each weekend inside the period pushes the date back by 2 days. With 10 working days, no holidays and a start date on a weekday that is exactly two calendar weeks, which is why every due date here falls on the same weekday as its invoice date.
More to watch out for
- Do not read 10 working days as 14 calendar days in a period with a holiday. The two only agree when no holiday falls inside the period.
Variations
=WORKDAY(C2 - 1,10)
=WORKDAY(C2 - 1;10)
Use it when the contract counts the invoice date itself as day 1. For 26-0102 the due date becomes Friday Feb 13 instead of Monday Feb 16.
=C2 + 14
=C2 + 14
Use it when the agreement says 14 days, not working days. It does not skip weekends, so it is the wrong test for a term in working days.
Intermediate
Due dates of sales invoices around Dutch public holidays
Veldhuis Installatie BV gives its customers a term of 10 working days, held in J1. For the receivables aging you recalculate each due date and skip the Dutch public holidays in F2:F6:
- Christmas Day
- Boxing Day
- New Year's Day
- Easter Monday
- King's Day
Invoice V-25-0921 is dated on a Saturday.
| Row | A | B | C | D | E | F | G | H | I | J | K |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Invoice | Customer | Invoice date | Due date | Holidays | Term (working days) | 1010 | ||||
| 2 | V-25-0910 | De Boer Bouw | 12 Dec 2025 | 25 Dec 2025 | Christmas Day | ||||||
| 3 | V-25-0921 | Woonstichting Zuidwijk | 20 Dec 2025 | 7 Jan 20267 Jan 2026=WORKDAY(C3, $J$1, $F$2:$F$6)=WORKDAY(C3; $J$1; $F$2:$F$6) | 26 Dec 2025 | Boxing Day | |||||
| 4 | V-26-0204 | Kramer Vastgoed | 27 Mar 2026 | 1 Jan 2026 | New Year's Day | ||||||
| 5 | V-26-0229 | Hotel Maasoever | 14 Apr 2026 | 6 Apr 2026 | Easter Monday | ||||||
| 6 | 27 Apr 2026 | King's Day | |||||||||
| 7 |
Swipe sideways to see all columns
Formula in D3
=WORKDAY(C3,$J$1, $F$2:$F$6)
=WORKDAY(C3;$J$1; $F$2:$F$6)
Result: 7 Jan 2026
Step by step
- The formula sits in
D3, soC3is Saturday Dec 20, 2025. The days argument comes from$J$1(10) and the holidays from$F$2:$F$6, both locked so they stay put when you copy down. - The start date is a Saturday. Counting begins with the next day, and weekend days never count, so Monday Dec 22 is working day 1, Tuesday is 2 and Wednesday Dec 24 is 3. This is the same as if the invoice were dated Friday Dec 19.
- Thursday Dec 25 and Friday Dec 26 are in
F2:F3and are skipped, and so are Saturday and Sunday. Monday Dec 29 is 4, Tuesday is 5 and Wednesday Dec 31 is 6. - Thursday Jan 1, 2026 is in
F4and is skipped. Friday Jan 2 is 7, the weekend is skipped, Monday Jan 5 is 8, Tuesday is 9 and Wednesday Jan 7 is 10. The result is Jan 7, 2026. - Without the holidays argument the result would be Friday Jan 2, 2026: three working days too early, so the customer would be shown as overdue while the term is still running.
- Copy down.
V-25-0910(Friday Dec 12) becomes Tuesday Dec 30.V-26-0204(Friday Mar 27) becomes Monday Apr 13, because Easter Monday Apr 6 is skipped.V-26-0229(Tuesday Apr 14) becomes Wednesday Apr 29, because King's Day on Monday Apr 27 is skipped.
Watch out: The list only holds the holidays of this period. For invoices in another year, the dates are wrong: Easter, Ascension Day and Whit Monday move every year. Add the new year's dates before you copy the formula to older or newer invoices.
More on this example: why it works, 2 more pitfalls
Why it works
The holidays argument takes the whole list in one range, and Excel removes only those dates that fall on a counted weekday, so a holiday on a weekend does no harm. Keeping the term in J1 and the holidays in F2:F6 means one change updates every row, and the list can be reused for other date functions in the same workbook.
More to watch out for
- Good Friday is not a national holiday, so WORKDAY counts it unless you add it. If the client closes that day, put it in the list; otherwise
V-26-0204would be one day off. - If the holidays range starts at
F1, the header text makes the formula return #VALUE!. Start the range at the first date.
Advanced
Start of the last 5 working days of each month
In the revenue cut-off test at Veldhuis Installatie BV you select invoices from the last 5 working days of each month. For every month you need the first day of that window.
You know one date in the month from the ledger extract; the holidays are in H2:H4 and the number of working days in F1.
| Row | A | B | C | D | E | F | G | H | I | J |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Month | Extract date | Window starts | Working days in window | 55 | Holidays | ||||
| 2 | March | 18 Mar 2026 | 27 Apr 2026 | King's Day | ||||||
| 3 | April | 9 Apr 2026 | 14 May 2026 | Ascension Day | ||||||
| 4 | May | 12 May 2026 | 22 May 202622 May 2026=WORKDAY(EOMONTH(B4, 0) + 1, -$F$1, $H$2:$H$4)=WORKDAY(EOMONTH(B4; 0) + 1; -$F$1; $H$2:$H$4) | 25 May 2026 | Whit Monday | |||||
| 5 | June | 16 Jun 2026 | ||||||||
| 6 |
Swipe sideways to see all columns
Formula in C4
=WORKDAY(EOMONTH(B4,0) + 1, -$F$1, $H$2:$H$4)
=WORKDAY(EOMONTH(B4;0) + 1; -$F$1; $H$2:$H$4)
Result: 22 May 2026
Step by step
- The formula sits in
C4, soB4is Tuesday May 12, 2026.$F$1is 5 and$H$2:$H$4holds the three holidays. - Inside out: EOMONTH(B4, 0) moves to the last day of May, Sunday May 31, 2026.
- Adding 1 gives Monday Jun 1, 2026, the day after the period. That is the start_date for WORKDAY, because the start day itself is not counted and the last day of the month must be able to count.
- -
$F$1is -5, so WORKDAY steps backward. Sunday May 31 and Saturday May 30 are skipped; Friday May 29 is 1, Thursday is 2, Wednesday is 3 and Tuesday May 26 is 4. - Monday May 25 is in
$H$2:$H$4(Whit Monday) and is skipped, and so is the weekend before it. Friday May 22 is 5. The result is May 22, 2026, so the window is May 22 to May 29: the working days 22, 26, 27, 28 and 29. - Copy down. March gives Wednesday Mar 25, April gives Thursday Apr 23 (King's Day on Monday Apr 27 is skipped) and June gives Wednesday Jun 24.
Watch out: Leaving out the holidays argument gives no error. May would start on Monday May 25 and April on Friday Apr 24, so the windows hold only 4 working days and invoices at the start of the window drop out of your test.
More on this example: why it works, 2 more pitfalls, 1 variation
Why it works
A negative days argument makes WORKDAY look back from a date, and starting from the day after the month end makes the month's last day the first one that can be counted, whether it is a working day or not. EOMONTH finds that month end from any date in the month, so the extract date does not have to be the last day.
More to watch out for
- Another mistake is leaving out the + 1. It looks right for May, where the month ends on a Sunday, but June ends on Tuesday Jun 30 and WORKDAY(Jun 30, -5) gives Tuesday Jun 23: a window of 6 working days.
- Writing
$F$1without the minus sign moves forward, and the date lands in the next month without any warning.
Variations
=WORKDAY(EOMONTH(B4,0), $F$1, $H$2:$H$4)
=WORKDAY(EOMONTH(B4;0); $F$1; $H$2:$H$4)
The window after the period end: the 5th working day after the month end, for the subsequent-events period. For the May row this is Friday Jun 5, 2026.
MasterExcel 2010 or later (This example needs Excel 2010 or later)
Repair deadlines for a service desk closed Sunday and Monday
The service desk of Veldhuis Installatie BV works Tuesday to Saturday and promises to complete a repair within 3 working days of the report. You test the service level for the rows below. The holidays are in G2:G3 and the 3 days are in G1.
Ticket T-3103 was reported on Saturday May 9, 2026 and completed on Friday May 15.
| Row | A | B | C | D | E | F | G | H |
|---|---|---|---|---|---|---|---|---|
| 1 | Ticket | Reported | Completed | Within the norm? | Norm (working days) | 33 | ||
| 2 | T-3101 | 6 May 2026 | 9 May 2026 | Holidays | 14 May 2026 | |||
| 3 | T-3102 | 8 May 2026 | 15 May 2026 | 25 May 2026 | ||||
| 4 | T-3103 | 9 May 2026 | 15 May 2026 | On time=IF(C4 > WORKDAY.INTL(B4, $G$1, "1000001", $G$2:$G$3), "Late", "On time")=IF(C4 > WORKDAY.INTL(B4; $G$1; "1000001"; $G$2:$G$3); "Late"; "On time") | ||||
| 5 | T-3104 | 18 May 2026 | 22 May 2026 | |||||
| 6 | T-3105 | 22 May 2026 | 27 May 2026 | |||||
| 7 |
Swipe sideways to see all columns
Formula in D4
=IF(C4 > WORKDAY.INTL(B4,$G$1, "1000001", $G$2:$G$3), "Late", "On time")
=IF(C4 > WORKDAY.INTL(B4;$G$1; "1000001"; $G$2:$G$3); "Late"; "On time")
Result: On time
Step by step
- The formula sits in
D4, soB4is Saturday May 9, 2026 andC4is Friday May 15. For the norm,$G$1is 3, and$G$2:$G$3holds the holidays Thursday May 14 and Monday May 25. - The weekend text "
1000001" has 7 characters, one per weekday from Monday to Sunday. A 1 marks a day off: Monday (first character) and Sunday (last character). Tuesday to Saturday are working days, so Saturday May 9 is a normal working day for this desk. - WORKDAY.INTL does not count the start day. Sunday May 10 and Monday May 11 are closed. Tuesday May 12 is working day 1 and Wednesday May 13 is 2.
- Thursday May 14 is in
$G$2:$G$3and is skipped. Friday May 15 is working day 3, so the deadline is Friday May 15, 2026. - IF compares
C4, Friday May 15, with that deadline, Friday May 15.C4is not later than the deadline, so the test is FALSE and the formula returns the text for on time. A repair on the deadline day still meets the norm. Plain WORKDAY would give Wednesday May 13 for this ticket (Monday May 11 is 1, Tuesday is 2, Wednesday is 3) and flag it as late.
Copy down:
T-3102has deadline Wednesday May 13 and was completed on May 15, so it is late;T-3104was reported on a closed Monday and has deadline Thursday May 21, so completion on May 22 is late.
Watch out: A different mistake is using WORKDAY, or the default weekend code 1, for this desk. It runs without an error, treats Saturday as closed and Monday as open, and moves T-3103 to a deadline of Wednesday May 13, so ticket T-3103 is reported as late when it met the norm.
More on this example: why it works, 2 more pitfalls, 2 variations
Why it works
WORKDAY.INTL takes the weekend as a code or as a 7-character text, so any pattern of days off works; WORKDAY cannot do this because its weekend is fixed at Saturday and Sunday. Putting the call inside the IF keeps deadline and test in one cell, so no helper column is needed.
Do not use this construction when the norm is in hours, or when each engineer has a different roster: the function knows one pattern for all rows, and a calendar table with one row per date is then the better tool. If you only need to test compliance and not the deadline itself, NETWORKDAYS.INTL counts the elapsed working days between the two dates with the same weekend text.
More to watch out for
Type
1000001into a cell and Excel stores the number 1,000,0011.000.001, not the 7-character text. A number is read as a numeric weekend code, and 1,000,0011.000.001 is not one, so the pattern is not applied and the formula fails. Microsoft documents #VALUE! for a weekend string of invalid length or with invalid characters.The code must be text: keep it in quotation marks inside the formula, or use the code 2 for Sunday and Monday.
- The text starts on Monday. Reading it from Sunday, as in a US calendar, flips the days off without any error.
Variations
=WORKDAY.INTL(B4,$G$1, 2, $G$2:$G$3)
=WORKDAY.INTL(B4;$G$1; 2; $G$2:$G$3)
Code 2 means Sunday and Monday off and gives the same deadline, Friday May 15, 2026. Prefer the text form for patterns without a code, such as Tuesday and Friday off.
=WORKDAY.INTL(B4,$G$1, "1000001", $G$2:$G$3)
=WORKDAY.INTL(B4;$G$1; "1000001"; $G$2:$G$3)
Put this in a helper column and fill it down to see the deadline itself for all five tickets: Sat 9 May, Wed 13 May, Fri 15 May, Thu 21 May and Wed 27 May 2026. Compared with the completion dates, only T-3102 and T-3104 are late.
Common mistakes
| Symptom | Cause | Fix |
|---|---|---|
| A number such as 46069 instead of a date | The cell shows a number such as 46069 instead of a date. | WORKDAY returns a serial number. Give the cell a date format (Ctrl+1, then Date); the value itself is already correct. |
| Day 1 lands a working day later than expected | An invoice dated Monday with 10 working days comes out on a Monday two weeks later, while you expected the Friday before it. | Day 1 is Tuesday. If the contract counts the invoice date as day 1, use WORKDAY(start_date - 1, days). |
| Result a day or more too early around holidays | The dates look right but the result is one or more days too early around Easter, King's Day or Christmas. | Without the holidays argument Excel treats every Monday to Friday as a working day. Keep a holiday list per year, because Easter, Ascension Day and Whit Monday move, and refer to it with an absolute reference such as $F$2:$F$6. |
| #VALUE! although the formula looks correct | The result is #VALUE! although the formula looks correct. | One of the dates is text that Excel cannot read as a date under your regional setting, often an imported date, or the holidays range includes a header cell. Excel reads many date-like texts without complaint, so a #VALUE! points to text it could not read. Check with ISNUMBER on the date and start the holidays range on the first real date. |