Tabellab
Excel formulas

NETWORKDAYS and WORKDAY in Excel: count working days and set due dates

NETWORKDAYS and WORKDAY are two sides of the same calendar. NETWORKDAYS takes two dates and tells you how many working days lie between them, counting both the start and the end day. WORKDAY takes a start date and a number of working days and returns the date you land on, not counting the start day. Both skip Saturdays, Sundays and every date in a holiday list. In the example below, a job received on Wednesday 1 April 2026 with a 3-workday SLA is due on Wed 8 Apr once Good Friday and Easter Monday are skipped, not on Mon 6 Apr as it would be without the holiday list.

Updated 21 Oct 2026 6 min read By Tabellab team

The syntax of both functions

  • =NETWORKDAYS(start_date, end_date, [holidays]) returns a number: the working days from start to end, both included. Monday to Friday of one week is 5.
  • =WORKDAY(start_date, days, [holidays]) returns a date: the day that lies days working days after the start. WORKDAY(Monday, 5) is the next Monday.
  • holidays is optional in both: a range of real dates to skip, such as $B$10:$B$12.

WORKDAY returns a serial number, so format the cell as a date. A negative number of days counts backwards: =WORKDAY(deadline,-3) is the latest day to start a three-day task.

Worked example: six jobs and three closure days

Columns B and E are dates, column C is the SLA in working days. D and F are formulas, and rows 14 to 19 take job J-102 apart. The holiday list is in B10:B12.

Worked example: six jobs and three closure days
ABCDEF
1JobReceivedSLA (workdays)Due (WORKDAY)CompletedWorkdays taken
2J-10123 Mar 20265Mon 30 Mar27 Mar 20265
3J-10201 Apr 20263Wed 8 Apr09 Apr 20265
4J-10302 Apr 20265Mon 13 Apr10 Apr 20265
5J-10413 Apr 202610Mon 27 Apr28 Apr 202612
6J-10519 May 20265Wed 27 May27 May 20266
7J-10622 May 20262Wed 27 May29 May 20265
8
9Closure daysDate
10Good Friday03 Apr 2026
11Easter Monday06 Apr 2026
12Company holiday25 May 2026
13
14J-102: calendar days, E3 − B38
15J-102: NETWORKDAYS without the holiday list7
16J-102: NETWORKDAYS with the holiday list5
17J-102: Monday-to-Saturday days, NETWORKDAYS.INTL code 116
18J-102: due date if you forget the holidaysMon 6 Apr
19Jobs late (workdays taken > SLA + 1)3
Key formulas
  • D3=TEXT(WORKDAY(B3,C3,$B$10:$B$12),"ddd d mmm")Due date, holidays skipped
  • F3=NETWORKDAYS(B3,E3,$B$10:$B$12)Working days, both ends counted
  • F17=NETWORKDAYS.INTL(B3,E3,11,$B$10:$B$12)Sunday-only weekend
  • F19=SUMPRODUCT(--(F2:F7>C2:C7+1))Late jobs: more than SLA + 1

The dates follow the 2026 calendar, in which Good Friday is 3 April and Easter Monday 6 April. Use your own country's or company's closure days.

Count working days with NETWORKDAYS

Job J-102 was received on Wed 1 Apr 2026 and completed on Thu 9 Apr. Plain subtraction, =E3-B3, gives 8 calendar days. =NETWORKDAYS(B3,E3) gives 7, because the weekend of 4 and 5 April is skipped and both end days count. Add the holiday list, =NETWORKDAYS(B3,E3,$B$10:$B$12), and Good Friday and Easter Monday drop out too: 5 working days. Only holidays that fall inside the period change the result, so one list for the whole year works for every row.

Find a due date with WORKDAY

The SLA in column C is a number of working days. =WORKDAY(B2,C2,$B$10:$B$12) turns it into the date the job is due. For J-102, the three working days after Wed 1 Apr are Thu 2 Apr, Tue 7 Apr and Wed 8 Apr, so the job is due on Wed 8 Apr. Without the holiday list Excel counts Good Friday as a working day and returns Mon 6 Apr, which is itself a holiday. The same trap catches J-105: five working days after Tue 19 May skip the company holiday on Mon 25 May and land on Wed 27 May.

In the grid, column D wraps the result in TEXT(…,"ddd d mmm") so that the weekday is visible. In your own sheet, =WORKDAY(B2,C2,$B$10:$B$12) with a date format does the same job and keeps a real date you can calculate with.

The off-by-one difference between the two

Because NETWORKDAYS counts the start day and WORKDAY does not, the two are not exact opposites. A job received on a working day and finished exactly on its WORKDAY due date has taken SLA + 1 working days by NETWORKDAYS. J-105 shows it: SLA 5, due and completed on Wed 27 May, NETWORKDAYS 6, on time. So when every start date is a working day, as here, the late test is workdays taken > SLA + 1. Simpler and always safe is to compare the dates directly: =IF(E2>WORKDAY(B2,C2,$B$10:$B$12),"Late","On time"). In the example 3 of the 6 jobs are late: J-102, J-104 and J-106.

If you want the working days elapsed after the start day, subtract 1: =NETWORKDAYS(B2,E2,$B$10:$B$12)-1.

Other weekends: NETWORKDAYS.INTL and WORKDAY.INTL

Not every team works Monday to Friday. The .INTL versions take a weekend argument between the dates and the holidays: 1 is Saturday and Sunday (the default), 7 Friday and Saturday, 11 Sunday only and 17 Saturday only. You can also pass a seven-character mask from Monday to Sunday in which 1 means a day off, so "0000011" is the normal weekend. For a field crew that also works on Saturdays, =NETWORKDAYS.INTL(B3,E3,11,$B$10:$B$12) counts J-102 as 6 days, because Saturday 4 April now counts.

Keep the holiday list in cells

Put the closure days in one column of real dates and refer to it with an absolute range, $B$10:$B$12, or a named range such as Holidays. Every formula then uses the same list, and next year you change the dates in one place. Holidays stored as text instead of real dates can give wrong results or an error, so check them with =ISNUMBER(B10). For the month-end and renewal dates that often go with these deadlines, see EDATE and EOMONTH in the labs below, and for adding up amounts by date range see the SUMIFS examples.

Common mistakes

  • Forgetting the holiday list. Without it, WORKDAY can return a public holiday as the due date (Mon 6 Apr for J-102) and NETWORKDAYS counts days nobody worked.
  • Relative holiday ranges. B10:B12 becomes B11:B13 when you fill the formula down. Lock it with $ or use a named range.
  • Treating the two functions as exact opposites. NETWORKDAYS counts the start day, WORKDAY does not. Compare dates, or allow for SLA + 1.
  • Subtracting dates to get working days. =E3-B3 counts calendar days, weekends and holidays included.
  • Holidays stored as text. A date typed as text is not a date. Check with ISNUMBER and convert with DATEVALUE or DATE.
  • The wrong weekend code. Code 1 is the normal Saturday and Sunday weekend. Sunday only is 11, not 1 or 7.

Frequently asked questions

Does NETWORKDAYS include the start date?

Yes. NETWORKDAYS counts both the start and the end date if they are working days, so Monday to Friday of the same week returns 5. Subtract 1 if you want the working days elapsed after the start.

What is the difference between WORKDAY and NETWORKDAYS?

NETWORKDAYS returns the number of working days between two dates. WORKDAY returns the date that is a given number of working days after a start date, or before it with a negative number. Both skip weekends and an optional list of holidays.

How do I exclude holidays in NETWORKDAYS?

List the holiday dates in a range of cells and pass it as the last argument, for example =NETWORKDAYS(B2,E2,$B$10:$B$12). Lock the range with $ so that it does not move when you copy the formula.

How do I count working days with a six-day week?

Use NETWORKDAYS.INTL with a weekend code. Code 11 makes only Sunday a day off, so =NETWORKDAYS.INTL(start,end,11,holidays) counts Monday to Saturday.

Practise it in a lab

Related guides

Reading is step one. Doing is step two.

Every guide links to a lab where you build the same calculation in an online spreadsheet and get instant feedback.

Open the lab