NETWORKDAYS
NETTO.WERKDAGEN in Dutch Excel
Counts the working days, Monday to Friday, from one date to another, both included, minus any holidays you list.
Last updated: 13 October 2026
| Row | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Journal | Entry no. | Invoice date | Posting date | Working days |
| 2 | INK | 25-0412 | 3 Dec 2025 | 16 Dec 2025 | 1010=NETWORKDAYS(C2, D2)=NETWORKDAYS(C2; D2) |
| 3 | INK | 25-0413 | 10 Dec 2025 | 12 Dec 2025 | |
| 4 | INK | 25-0414 | 12 Dec 2025 | 15 Dec 2025 |
Swipe sideways to see all columns
Result: 10
=NETWORKDAYS(C2,D2)
=NETWORKDAYS(C2;D2)
What NETWORKDAYS does and when to use it
What it does: it counts the working days between two dates, both included, for example how many days a confirmation request took.
When to use it: for leave taken, capacity per month or turnaround times in working days. Saturday and Sunday never count; list public holidays or closing days in the holidays range. For another weekend, use NETWORKDAYS.INTL; for a date some working days away, use WORKDAY.
How Excel evaluates it
Excel reads both dates as serial numbers and ignores any time of day. It walks from start_date to end_date, both included, and counts every day that is Monday to Friday.
Then it subtracts each date in holidays that falls on one of those counted days; a holiday on a weekend or outside the period changes nothing, and a date listed twice is subtracted once. If end_date lies before start_date, Excel counts the same way and returns the result as a negative number.
Watch out: The start date and the end date both count: Monday to Friday of one week gives 5, not 4.
Mental model
A strip of calendar squares from the first date to the last: cross out the Saturdays and Sundays, cross out the holidays that are still visible, and count the squares that are left.
Terms used on this page: serial number, range
NETWORKDAYS(start_date,end_date, [holidays])
NETWORKDAYS(start_date;end_date; [holidays])
| Argument | Type | Meaning |
|---|---|---|
start_date | Required | The first day of the period; it counts if it is a working day. |
end_date | Required | The last day of the period; it counts too. |
holidays | Optional | A range of dates to leave out, such as public holidays. |
Return value:A number: the working days between both dates, both included
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
Processing time of purchase invoices
You test the processing of purchase invoices in the XAF auditfile of Veldhuis Installatie BV. For each entry in journal INK you want to know how many working days passed between the invoice date and the posting date, both days included.
| Row | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 1 | Journal | Entry no. | Invoice date | Posting date | Working days | |
| 2 | INK | 25-0412 | 3 Dec 2025 | 16 Dec 2025 | 1010=NETWORKDAYS(C2, D2)=NETWORKDAYS(C2; D2) | |
| 3 | INK | 25-0413 | 10 Dec 2025 | 12 Dec 2025 | ||
| 4 | INK | 25-0414 | 12 Dec 2025 | 15 Dec 2025 | ||
| 5 |
Swipe sideways to see all columns
Formula in E2
=NETWORKDAYS(C2,D2)
=NETWORKDAYS(C2;D2)
Result: 1010
Step by step
- Excel reads
C2, Wednesday 3 Dec 2025, as start_date andD2, Tuesday 16 Dec 2025, as end_date. - From Dec 3 to Dec 16 with both ends included is 14 calendar days: 16 - 3 + 1 = 14.
- Two weekends fall inside: Dec 6 and 7, and Dec 13 and 14. Excel skips those 4 days: 14 - 4 = 10.
- No holidays argument is given, so nothing else is subtracted. The result is 10: Wed to Fri in the first week (3), a full week (5) and Mon and Tue in the last week (2).
- Copied to
E3, entry25-0413(Wed Dec 10 to Fri Dec 12) gives 3, and inE4entry25-0414(Fri Dec 12 to Mon Dec 15) gives 2.
Watch out: Dutch public holidays are not removed here. If your period contains a public holiday, such as Christmas, the count is too high until you add the holidays argument.
More on this example: why it works, 1 more pitfall
Why it works
NETWORKDAYS includes the start and the end date, so an invoice dated on a Wednesday and posted on a Tuesday uses both of those days. Plain subtraction, D2 - C2, gives 13 calendar days and counts the weekends too, which overstates the delay for a team that does not post at weekends.
More to watch out for
- If the invoice date lies after the posting date, the result is negative. Treat that as a finding (an invoice posted before it is dated) and not as an error in the formula.
Intermediate
Confirmation turnaround, holidays excluded
You follow up on balance confirmations for year-end 31 December 2025. For each relation you want the working days between the date the request was sent and the date the reply came in, leaving out the public holidays in F2:F4. The formula is copied down the list.
| Row | A | B | C | D | E | F | G |
|---|---|---|---|---|---|---|---|
| 1 | Relation | Request sent | Reply received | Working days | Holidays | ||
| 2 | C2001 | 15 Dec 2025 | 9 Jan 2026 | 1717=NETWORKDAYS(B2, C2, $F$2:$F$4)=NETWORKDAYS(B2; C2; $F$2:$F$4) | 25 Dec 2025 | ||
| 3 | C2002 | 1 Dec 2025 | 12 Dec 2025 | 26 Dec 2025 | |||
| 4 | C2003 | 22 Dec 2025 | 30 Dec 2025 | 1 Jan 2026 | |||
| 5 | D1001 | 5 Jan 2026 | 14 Jan 2026 | ||||
| 6 |
Swipe sideways to see all columns
Formula in D2
=NETWORKDAYS(B2,C2, $F$2:$F$4)
=NETWORKDAYS(B2;C2; $F$2:$F$4)
Result: 1717
Step by step
- Excel reads
B2, Monday 15 Dec 2025, andC2, Friday 9 Jan 2026. That is four full weeks, Monday to Friday. - Before holidays, the count is 4 × 5 = 20 working days. This is what the formula returns without the third argument.
- Excel checks each date in
$F$2:$F$4. Dec 25 is a Thursday inside the period: subtract 1. Dec 26 is a Friday inside the period: subtract 1. Jan 1 is a Thursday inside the period: subtract 1. - The result is 20 - 3 = 17 working days.
- Copied to
D3, relationC2002(Dec 1 to Dec 12) has two full weeks and no holiday: 10. The $ signs keep the holiday range onF2:F4. Without them,D4(relationC2003, Dec 22 to Dec 30) would look atF4:F6: Christmas Day and Boxing Day drop out of the range and the result becomes 7 instead of 5.
Watch out: A holiday list that covers only one year gives silently wrong counts once a reply arrives in the next year. Add the dates for the following year before you start next year's interim work.
More on this example: why it works, 1 more pitfall
Why it works
The holidays argument only removes days that would otherwise have been counted, so you can keep one list for the whole audit and use it for every request. Relation C2003, sent Monday Dec 22 and answered Tuesday Dec 30, gives 5: seven weekdays, minus Christmas Day and Boxing Day.
More to watch out for
- If someone enters the dates the wrong way round, the result is negative (-17) rather than an error. Check the order of the dates if a negative number can end up in a total.
Advanced
Available audit hours in the month of any date
You plan the year-end fieldwork and want the hours one auditor has in a month: working days in that month times the hours per day. The month is picked by typing any date in it into E1, and the public holidays are listed in B2:B6, some of them in other months.
| Row | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 1 | Holiday | Date | Month | 10 Dec 2025 | ||
| 2 | Ascension Day | 29 May 2025 | Hours per day | 88 | ||
| 3 | Whit Monday | 9 Jun 2025 | Available hours | 168168=NETWORKDAYS(EOMONTH(E1, -1) + 1, EOMONTH(E1, 0), B2:B6) * E2=NETWORKDAYS(EOMONTH(E1; -1) + 1; EOMONTH(E1; 0); B2:B6) * E2 | ||
| 4 | Christmas Day | 25 Dec 2025 | ||||
| 5 | Boxing Day | 26 Dec 2025 | ||||
| 6 | New Year's Day | 1 Jan 2026 | ||||
| 7 |
Swipe sideways to see all columns
Formula in E3
=NETWORKDAYS(EOMONTH(E1,-1) + 1, EOMONTH(E1, 0), B2:B6) * E2
=NETWORKDAYS(EOMONTH(E1;-1) + 1; EOMONTH(E1; 0); B2:B6) * E2
Result: 168168
Step by step
- Excel evaluates the first EOMONTH: the end of the month before 10 Dec 2025 is 30 Nov 2025. Adding 1 gives 1 Dec 2025, the start_date.
- The second EOMONTH returns 31 Dec 2025, the end_date. The formula now covers all of December, whatever day was typed in
E1. - December 2025 starts on a Monday and has 31 days, 8 of them on weekends (Dec 6, 7, 13, 14, 20, 21, 27, 28), so there are 31 - 8 = 23 weekdays.
- From
B2:B6, Dec 25 (Thursday) and Dec 26 (Friday) fall inside December on weekdays: 23 - 2 = 21. The other three dates lie outside the period and are ignored. - NETWORKDAYS returns 21, and Excel multiplies by
E2: 21 × 8 = 168 hours. - Type 20 Jan 2026 in
E1and the period becomes Jan 1 to Jan 31: 22 weekdays minus New Year's Day is 21, again 168 hours.
Watch out: Using EOMONTH(E1, -1) without + 1 starts the period on the last day of the previous month. For December that goes unnoticed because Nov 30 is a Sunday, but for January the period starts on Wednesday Dec 31 and adds a working day: 8 hours too many.
More on this example: why it works, 1 more pitfall, 1 variation
Why it works
EOMONTH(E1, -1) + 1 and EOMONTH(E1, 0) turn any date into the first and last day of its month, so you never type period boundaries. NETWORKDAYS only subtracts holidays that land inside the period, so one list for the whole audit can feed every month.
More to watch out for
- Staff do not always work 8 hours on every working day, and part-timers work fewer days. Multiply by their own hours per day, or count only their working days with NETWORKDAYS.INTL and a weekday mask.
Variations
=NETWORKDAYS(DATE(2025,12, 1), DATE(2025, 12, 31), B2:B6) * E2
=NETWORKDAYS(DATE(2025;12; 1); DATE(2025; 12; 31); B2:B6) * E2
Fixed dates with DATE: fine for a one-off, but you have to edit two dates for every new month.
MasterExcel 2021 or later (This example needs Excel 2021 or later)
Approval age of manual journal entries, open ones included
In your journal entry testing you check that manual MEM entries are approved within 2 working days, where the day of entry does not count. Approved entries are measured to their approval date; unapproved ones to the report date in G1. The holidays are in G2:G4.
Entry 25-0884, still unapproved, was entered on Monday 22 Dec 2025.
| Row | A | B | C | D | E | F | G | H |
|---|---|---|---|---|---|---|---|---|
| 1 | Entry no. | Entered | Approved | Working days | Report date | 16 Jan 2026 | ||
| 2 | 25-0871 | 15 Dec 2025 | 17 Dec 2025 | Holidays | 25 Dec 2025 | |||
| 3 | 25-0884 | 22 Dec 2025 | 1616=LET( opened, B3, closed, IF(C3 = "", $G$1, C3), elapsed, NETWORKDAYS(opened, closed, $G$2:$G$4) - 1, MAX(0, elapsed) )=LET( opened; B3; closed; IF(C3 = ""; $G$1; C3); elapsed; NETWORKDAYS(opened; closed; $G$2:$G$4) - 1; MAX(0; elapsed) ) | 26 Dec 2025 | ||||
| 4 | 25-0890 | 30 Dec 2025 | 2 Jan 2026 | 1 Jan 2026 | ||||
| 5 | 25-0902 | 27 Dec 2025 | 29 Dec 2025 | |||||
| 6 | 25-0905 | 28 Dec 2025 | 28 Dec 2025 | |||||
| 7 |
Swipe sideways to see all columns
Formula in D3
=LET( opened,B3, closed, IF(C3 = "", $G$1, C3), elapsed, NETWORKDAYS(opened, closed, $G$2:$G$4) - 1, MAX(0, elapsed) )
=LET( opened;B3; closed; IF(C3 = ""; $G$1; C3); elapsed; NETWORKDAYS(opened; closed; $G$2:$G$4) - 1; MAX(0; elapsed) )
Result: 1616
Step by step
- LET sets opened to
B3, Monday 22 Dec 2025. For closed, IF findsC3empty and takes the report date from$G$1: Friday 16 Jan 2026. - NETWORKDAYS walks from Dec 22 to Jan 16, both included. That is four full weeks, Monday to Friday: 4 × 5 = 20 weekdays.
- Dec 25, Dec 26 and Jan 1 from
$G$2:$G$4are all weekdays inside the period: 20 - 3 = 17. - Subtracting 1 removes the day of entry, which does not count toward the 2-day rule: elapsed = 17 - 1 = 16.
- MAX(0, 16) returns 16: the entry has been waiting 14 working days beyond the limit of 2. For
25-0905, entered and approved on Sunday Dec 28, NETWORKDAYS gives 0 and elapsed is -1; MAX turns that into 0 instead of showing a negative age.
Watch out: The mirror-image mistake: leaving out the - 1 gives 17, which looks like a sensible age and overstates every entry by one day, so entries approved in time are reported as late.
More on this example: why it works, 1 more pitfall, 1 variation
Why it works
NETWORKDAYS counts both ends, so subtracting 1 converts 'days touched' into 'days elapsed after entry', and an entry made on Saturday and approved on Monday (25-0902) correctly gets 0. LET names each step so the test rule can be read off the formula, and the IF lets one formula serve approved and unapproved entries.
Do not use this construction when the rule is in hours, such as approval within 24 hours: NETWORKDAYS works in whole days, and you need the time parts of the timestamps instead. It is also the wrong tool if the client books on Saturdays: use NETWORKDAYS.INTL with a weekend code.
More to watch out for
- If the report date in
G1is replaced by TODAY(), the numbers change every day and your working paper can no longer be reproduced. Type the report date for anything that goes into the audit file.
Variations
=NETWORKDAYS.INTL(B3,$G$1, 11, $G$2:$G$4) - 1
=NETWORKDAYS.INTL(B3;$G$1; 11; $G$2:$G$4) - 1
For a client that books Monday to Saturday: weekend code 11 means Sunday only, so Dec 27 and Jan 3, 10 count too and 25-0884 gets 19.
Common mistakes
| Symptom | Cause | Fix |
|---|---|---|
| One day more than expected | Expecting 'days between' and getting one more than you counted: Monday to Friday of the same week gives 5, not 4. | Both ends count. For elapsed working days after a start date, subtract 1. |
| Count too high, holidays not subtracted | The holidays range was typed as text (from an import or with an apostrophe), so no holiday is subtracted and the count is too high. | Check with ISNUMBER on a holiday cell; real dates return TRUE. |
| Wrong count in the lower rows | Copying the formula down without $ around the holidays range, so lower rows look at a shifted, partly empty range. | Lock it: $F$2:$F$4, or give the list a name such as Holidays. |