Available in:All versions (Works in Excel 2007, every later version, Microsoft 365 and Excel for the web)Examples need Excel 2021 or laterCategory:Date & time

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.

Difficulty rating 2 of 5. The arguments are plain dates; what trips people up is that both ends are counted and that holidays only count when they fall on a weekday.

Last updated: 13 October 2026

See the worked examples

Sheet excerpt: E2 holds the formula
RowABCDE
1JournalEntry no.Invoice datePosting dateWorking days
2INK25-04123 Dec 202516 Dec 20251010=NETWORKDAYS(C2, D2)=NETWORKDAYS(C2; D2)
3INK25-041310 Dec 202512 Dec 2025
4INK25-041412 Dec 202515 Dec 2025
Formula cell (E2)Input

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])
Arguments
ArgumentTypeMeaning
start_dateRequiredThe first day of the period; it counts if it is a working day.
end_dateRequiredThe last day of the period; it counts too.
holidaysOptionalA 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.

Sheet excerpt: E2 holds the formula
RowABCDEF
1JournalEntry no.Invoice datePosting dateWorking days
2INK25-04123 Dec 202516 Dec 20251010=NETWORKDAYS(C2, D2)=NETWORKDAYS(C2; D2)
3INK25-041310 Dec 202512 Dec 2025
4INK25-041412 Dec 202515 Dec 2025
5
Formula cell (E2)Input

Formula in E2

=NETWORKDAYS(C2, D2)
=NETWORKDAYS(C2; D2)

Result: 1010

Step by step
  1. Excel reads C2, Wednesday 3 Dec 2025, as start_date and D2, Tuesday 16 Dec 2025, as end_date.
  2. From Dec 3 to Dec 16 with both ends included is 14 calendar days: 16 - 3 + 1 = 14.
  3. Two weekends fall inside: Dec 6 and 7, and Dec 13 and 14. Excel skips those 4 days: 14 - 4 = 10.
  4. 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).
  5. Copied to E3, entry 25-0413 (Wed Dec 10 to Fri Dec 12) gives 3, and in E4 entry 25-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.

Sheet excerpt: D2 holds the formula
RowABCDEFG
1RelationRequest sentReply receivedWorking daysHolidays
2C200115 Dec 20259 Jan 20261717=NETWORKDAYS(B2, C2, $F$2:$F$4)=NETWORKDAYS(B2; C2; $F$2:$F$4)25 Dec 2025
3C20021 Dec 202512 Dec 202526 Dec 2025
4C200322 Dec 202530 Dec 20251 Jan 2026
5D10015 Jan 202614 Jan 2026
6
Formula cell (D2)InputNote: F2:F4 hold dates: Christmas Day (Thu 25 Dec 2025), Boxing Day (Fri 26 Dec 2025) and New Year's Day (Thu 1 Jan 2026).

Formula in D2

=NETWORKDAYS(B2, C2, $F$2:$F$4)
=NETWORKDAYS(B2; C2; $F$2:$F$4)

Result: 1717

Step by step
  1. Excel reads B2, Monday 15 Dec 2025, and C2, Friday 9 Jan 2026. That is four full weeks, Monday to Friday.
  2. Before holidays, the count is 4 × 5 = 20 working days. This is what the formula returns without the third argument.
  3. 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.
  4. The result is 20 - 3 = 17 working days.
  5. Copied to D3, relation C2002 (Dec 1 to Dec 12) has two full weeks and no holiday: 10. The $ signs keep the holiday range on F2:F4. Without them, D4 (relation C2003, Dec 22 to Dec 30) would look at F4: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.

Sheet excerpt: E3 holds the formula
RowABCDEF
1HolidayDateMonth10 Dec 2025
2Ascension Day29 May 2025Hours per day88
3Whit Monday9 Jun 2025Available hours168168=NETWORKDAYS(EOMONTH(E1, -1) + 1, EOMONTH(E1, 0), B2:B6) * E2=NETWORKDAYS(EOMONTH(E1; -1) + 1; EOMONTH(E1; 0); B2:B6) * E2
4Christmas Day25 Dec 2025
5Boxing Day26 Dec 2025
6New Year's Day1 Jan 2026
7
Formula cell (E3)InputNote: E1 holds a date: 10 Dec 2025.

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
  1. 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.
  2. The second EOMONTH returns 31 Dec 2025, the end_date. The formula now covers all of December, whatever day was typed in E1.
  3. 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.
  4. 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.
  5. NETWORKDAYS returns 21, and Excel multiplies by E2: 21 × 8 = 168 hours.
  6. Type 20 Jan 2026 in E1 and 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.

Sheet excerpt: D3 holds the formula
RowABCDEFGH
1Entry no.EnteredApprovedWorking daysReport date16 Jan 2026
225-087115 Dec 202517 Dec 2025Holidays25 Dec 2025
325-088422 Dec 20251616=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
425-089030 Dec 20252 Jan 20261 Jan 2026
525-090227 Dec 202529 Dec 2025
625-090528 Dec 202528 Dec 2025
7
Formula cell (D3)InputNote: G1:G4 hold dates: report date Fri 16 Jan 2026; holidays Thu 25 Dec 2025, Fri 26 Dec 2025 and Thu 1 Jan 2026.

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
  1. LET sets opened to B3, Monday 22 Dec 2025. For closed, IF finds C3 empty and takes the report date from $G$1: Friday 16 Jan 2026.
  2. NETWORKDAYS walks from Dec 22 to Jan 16, both included. That is four full weeks, Monday to Friday: 4 × 5 = 20 weekdays.
  3. Dec 25, Dec 26 and Jan 1 from $G$2:$G$4 are all weekdays inside the period: 20 - 3 = 17.
  4. Subtracting 1 removes the day of entry, which does not count toward the 2-day rule: elapsed = 17 - 1 = 16.
  5. 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 G1 is 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

Common mistakes
SymptomCauseFix
One day more than expectedExpecting '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 subtractedThe 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 rowsCopying 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.