← Functions
networkdaysdatefunctionsintermediate

Excel NETWORKDAYS Function

NETWORKDAYS counts the working days between two dates, excluding weekends and any holidays you specify.

NETWORKDAYS counts the number of working days between two dates, excluding weekends and any holidays you list. It treats Saturday and Sunday as the weekend every time, with no way to change that inside the function itself. If your team works a different schedule, like Friday-Saturday weekends, you'll need NETWORKDAYS.INTL instead. More on that below.

Available in: Excel 365, Excel 2021, Excel 2019, Excel 2016, and Excel 2013. Also available in Excel 2010 and 2007. Not available in Excel 2003 or earlier without the Analysis ToolPak add-in.

Syntax

=NETWORKDAYS(start_date, end_date, [holidays])
ParameterRequiredDescription
start_dateYesThe first date in the range. Counts as a workday in the total if it falls on a weekday and isn't listed in holidays.
end_dateYesThe last date in the range. Same counting rule as start_date.
holidaysNoA range or array of dates to exclude in addition to weekends. Leave it out and NETWORKDAYS only removes Saturdays and Sundays.

NETWORKDAYS requires real date values, not text that looks like a date. A cell that shows "3/2/2026" but is left-aligned (a sign it's stored as text) will throw #VALUE!. This is the single most common reason NETWORKDAYS breaks in real workbooks, especially when data is pasted in from another system or typed under a different regional date format.

Basic Example

You're calculating how many billable days a contractor worked between March 2 and March 27, 2026, excluding two company holidays that fell during that stretch.

=NETWORKDAYS(B2, C2, holidays)

// B2 = March 2, 2026 (start date)
// C2 = March 27, 2026 (end date)
// holidays = named range listing the two company holidays

The date range spans exactly four full Monday-through-Friday weeks, which is 20 workdays before any exclusions. Subtract the two company holidays and NETWORKDAYS returns 18. No manual counting, no adjusting for how many weekends fall inside the span.

How NETWORKDAYS Works

Both start and end dates count if they're workdays

A project that starts Monday and ends Friday returns 5, not 4. NETWORKDAYS counts both endpoints as full days worked, as long as neither one is a weekend or a listed holiday. This trips people up constantly when they expect an "elapsed days" calculation instead of an inclusive day count.

Weekends are always Saturday and Sunday

There's no argument for changing this. If your business runs Sunday through Thursday, or has a six-day work week, NETWORKDAYS will still exclude Saturday and Sunday regardless. That's the entire reason NETWORKDAYS.INTL exists, and it's worth switching to the moment your schedule isn't the standard five-day week.

Reversing the dates flips the sign

Put a later date in start_date and an earlier one in end_date, and NETWORKDAYS returns a negative number instead of an error. It doesn't warn you. A formula built to expect a positive count will just quietly produce something wrong if the two dates get swapped somewhere upstream.

Holidays must be actual date values

Excel only reads the date value in the holidays range. A cell labeled "Christmas" with no date attached does nothing; the label is invisible to the function. Every entry has to be a real date, whether typed directly, generated by DATE(), or pulled in from another sheet.

Common Use Cases

Counting total workdays in a year

Useful for capacity planning or annual accrual calculations.

=NETWORKDAYS(DATE(2026,1,1), DATE(2026,12,31), holidays)   // total business days in 2026

Workdays remaining in the current month

Handy for a dashboard tracking how much runway is left before month-end deadlines.

=NETWORKDAYS(TODAY(), EOMONTH(TODAY(), 0))

// TODAY()          = today's date
// EOMONTH(TODAY(),0) = last day of the current month

Per-employee variable vacation lists

An HR tracker where every staff member has a different personal vacation schedule can't use a single static holidays range, because that range applies the same days to everyone. Build the holiday list dynamically per row instead.

=NETWORKDAYS(B2, C2, FILTER(vacation_dates, staff_id=A2))

// B2, C2       = this employee's start and end date
// vacation_dates = full column of vacation dates for all staff
// staff_id      = column mapping each vacation date to an employee ID
// A2            = the employee ID for this row

FILTER rebuilds the holiday list on the fly for whichever employee is in A2, so one formula works down the entire roster instead of requiring a separate holiday range per person.

Estimating billable hours from workdays

A rough conversion for contractor billing when you're paid by the hour but tracked by the day.

=NETWORKDAYS(start_date, end_date) * 8   // assumes an 8-hour workday

Handling Errors

NETWORKDAYS throws #VALUE! when start_date, end_date, or any entry in holidays isn't a value Excel recognizes as a date. This is far more common than it sounds, since a date can display correctly and still be stored as text underneath.

Common causes of #VALUE!:

  • A date typed or pasted as text, with no true date serial number behind it
  • A date entered in a format your regional settings can't parse, like 13/02/2026 when Excel expects month first
  • A holidays range containing text labels or blanks mixed in with real dates
  • start_date or end_date pointing to an empty cell
=IFERROR(NETWORKDAYS(B2, C2, holidays), "Check date formatting")

This IFERROR example only catches actual errors, like #VALUE! from a text-formatted date. It won't catch a reversed date order, because NETWORKDAYS returns a negative number in that case, not an error. See the "What happens if the start date is later than the end date?" gotcha below for handling that separately.

Before troubleshooting a #VALUE! error, run =ISNUMBER(B2) on the suspect cell. If it returns FALSE, B2 isn't a real date no matter what it looks like on screen. Wrap it in DATEVALUE(B2) to convert it, or fix the source data at the point it enters the sheet.

Notes & Gotchas

What does the NETWORKDAYS function do in Excel?

NETWORKDAYS returns the number of whole working days between a start date and an end date. It excludes Saturdays and Sundays automatically, and it can also exclude a custom list of holiday dates supplied as the third argument.

How is NETWORKDAYS different from NETWORKDAYS.INTL?

NETWORKDAYS always treats Saturday and Sunday as the weekend, with no way to change it. NETWORKDAYS.INTL adds a weekend argument, either a numeric code or a 7-character string of 1s and 0s, so it works for schedules like a Friday-Saturday weekend or a six-day work week.

What are the required arguments for NETWORKDAYS?

start_date and end_date are required. holidays is optional; omit it and NETWORKDAYS only excludes weekends, with no holidays subtracted.

What is NETWORKDAYS commonly used for?

It's used for calculating accrued employee benefits, contractor billing periods, project timelines, and SLA deadlines, anywhere a business-day count matters more than a raw calendar-day count. Payroll teams lean on it heavily to figure out how many actual working days fall inside a pay period.

Can you customize which days count as weekends?

Not with NETWORKDAYS itself. The Saturday/Sunday weekend is fixed, so switch to NETWORKDAYS.INTL if you need a different weekend pattern, since it accepts a weekend argument that redefines which days don't count.

Why does NETWORKDAYS return #VALUE!?

The most common cause is a date stored as text instead of a true date value, often from data pasted in from another system or typed under a mismatched regional format. Test the cell with =ISNUMBER(B2); FALSE means it isn't a real date. Convert it with DATEVALUE() or fix the formatting at the source.

What happens if the start date is later than the end date?

NETWORKDAYS returns a negative number instead of an error. That's a handy signal for catching reversed dates in a validation formula, but it will silently hand back a negative day count in any calculation that isn't expecting it.

Because a reversed date order produces a negative number rather than an error, IFERROR won't catch it. If your workflow depends on start dates always coming before end dates, add an explicit check like =IF(B2>C2, "Dates reversed", NETWORKDAYS(B2,C2)).

Do holiday dates need to be formatted as actual dates?

Yes. Excel only reads the date value in the holidays range and ignores everything else. A cell that says "Thanksgiving" without an actual date attached does nothing, so every entry needs to be a real date value or NETWORKDAYS won't exclude it.

Related Functions

FunctionUse this when...
WORKDAYYou need to find a date a certain number of workdays in the future or past, rather than count the days between two dates.
DATEDIFYou need the difference between two dates in years, months, or days, not restricted to workdays only.