Calculating weekdays in Excel - WORKDAY and NETWORKDAYS functions

This short tutorial explains the use of Excel NETWORKDAYS and WORKDAY functions to calculate workdays with custom weekend parameters and holidays.

Microsoft Excel provides two functions specially designed for calculating weekdays - WORKDAY and NETWORKDAYS.

The WORKDAY function returns a date N working days in the future or in the past and you can use it to add or subtract workdays to a given date.

Using the NETWORKDAYS function, you can calculate the number of workdays between two dates that you specify.

In Excel 2010 and higher, more powerful modifications of the above-said functions are available, WORKDAY.INTL and NETWORKDAYS.INTL, which let you define which and how many days are weekend days.

And now, let's have a closer look at each function and see how you can use it to calculate working days in your Excel worksheets.

Excel WORKDAY function

The Excel WORKDAY function returns a date that is a given number of working days ahead of or prior to the start date. It excludes weekends as well as any holidays you specify.

The WORKDAY function is purposed for calculating workdays, milestones and due dates based on the standard working calendar, with Saturday and Sunday being the weekend days.

WORKDAY is a built-in function in Excel 2007 - 365. In earlier versions, you need to enable the Analysis ToolPak.

When using WORKDAY in Excel, you have to input the following arguments:

WORKDAY(start_date, days, [holidays])

The first 2 arguments are required and the last one is optional:

  • Start_date - the date from which to start counting weekdays.
  • Days - the number of workdays to add to / subtract from start_date. A positive number returns a future date, a negative number returns a past date.
  • Holidays - an optional list of dates that should not to be counted as working days. This can be either a range of cells containing the dates you want to exclude from calculations, or an array constant of the serial numbers representing the dates.

Now that you know the basics, let's see how you can use the WORKDAY function in your Excel worksheets.

How to use WORKDAY to add / subtract business days to date

To calculate workdays in Excel, follow these simple rules:

  • To add workdays, enter a positive number as the days argument of a WORKDAY formula.
  • To subtract workdays, use a negative number in the days argument.

Supposing you have a start date in cell A2, a list of holidays in cells B2:B5, and you want to find out the dates 30 workdays in the future and past. You can do this using the following formulas:

To add 30 workdays to the start date, excluding holidays in B2:B5:

=WORKDAY(A2, 30, B2:B5)

To subtract 30 workdays from the start date, excluding holidays in B2:B5:

=WORKDAY(A2, -30, B2:B5)

To calculate weekdays based on the current date, use the TODAY() function as the start date:

To add 30 workdays to today's date:

=WORKDAY(TODAY(), 30)

To subtract 30 workdays from today's date:

=WORKDAY(TODAY(), -30)

To supply the start date directly to the the formula, use the DATE function:

=WORKDAY(DATE(2015,5,6), 30)

The following screenshot demonstrates the results of all these and a few more WORKDAY formulas:
Using the WORKDAY function in Excel

And naturally, you can enter the number of workdays to add to / subtract from the start date in some cell, and then refer to that cell in your formula. For example:

=WORKDAY(A2, C2)

Where A2 is the start date and C2 is the number of non-weekend days behind (negative numbers) or ahead of (positive numbers) the start date, no holidays to exclude.
Excel WORKDAY formula example

Tip. In Excel 365 and 2021, you can use WORKDAY in combination with SEQUENCE to generate a series of working days.

Excel WORKDAY.INTL function

WORKDAY.INTL is a more powerful modification of the WORKDAY function that works with custom weekend parameters. As well as WORKDAY, it returns a date that is a specified number of workdays in the future or in the past, but lets you determine which days of the week should be considered weekend days.

The WORKDAY.INTL function was introduced in Excel 2010 and so is not available in earlier Excel versions.

The syntax of the Excel WORKDAY.INTL function is as follows:

WORKDAY.INTL(start_date, days, [weekend], [holidays])

The first two arguments are required and are akin to WORKDAY's:

Start_date - the initial date.

Days - the number of working days before (negative value) or after (positive value) the start date. If the days argument is supplied as a decimal number, it is truncated to the integer.

The last two arguments are optional:

Weekend - specifies which weekdays should be counted as weekend days. This can be either a number or a string, as demonstrated below.

Number Weekend days
1 or omitted Saturday, Sunday
2 Sunday, Monday
3 Monday, Tuesday
4 Tuesday, Wednesday
5 Wednesday, Thursday
6 Thursday, Friday
7 Friday, Saturday
11 Sunday only
12 Monday only
13 Tuesday only
14 Wednesday only
15 Thursday only
16 Friday only
17 Saturday only

Weekend string - a series of seven 0's and 1's that represent seven days of the week, beginning with Monday. 1 represents a non-working day and 0 represents a workday. For example:

  • "0000011" - Saturday and Sunday are weekends.
  • "1000001" - Monday and Sunday are weekends.

At first sight, weekend strings may seem superfluous, but I personally like this method better because you can make a weekend string on the fly without having to remember any numbers.

Holidays - an optional list of dates you want to exclude from the working day calendar. This can be a range of cells containing the dates, or an array constant of the serial values representing those dates.

Using WORKDAY.INTL in Excel - formula examples

Well, the pretty big bulk of theory we've just discussed may seem quite complicated and confusing, but trying your hand at formulas will make things really easy.

On our dataset, with the start date in cell A2 and a list of holidays in A5:A8, let's calculate workdays with custom weekends.

To add 30 workdays to the start date, Friday and Saturday counted as weekends and holidays in A5:A8 excluded:

=WORKDAY.INTL(A2, 30, 7, A5:A8)

or

=WORKDAY.INTL(A2, 30, "0000110", A5:A8)

To subtract 30 workdays from the start date, Sunday and Monday counted as weekends and holidays in A5:A8 excluded:

=WORKDAY.INTL(A2, -30, 2, A5:A8)

or

=WORKDAY.INTL(A2, -30, "1000001", A5:A8)

To add 10 workdays to the current date, Sunday being the only weekend day, no holidays:

=WORKDAY.INTL(TODAY(), 10, 11)

or

=WORKDAY.INTL(A2, 10, "0000001")

In your Excel sheet, the formulas may look similar to this:
Using the WORKDAY.INTL in Excel to calculate workdays in custom weekend parameters

Note. Both Excel WORKDAY and WORKDAY.INTL functions return serial numbers representing the dates. To get those numbers displayed as dates, select the cells with the numbers and press Ctrl+1 to open the Format Cells dialog. On the Number tab, select Date in the Category list, and choose the date format you want. For the detailed steps, please see How to change date format in Excel.

Excel WORKDAY and WORKDAY.INTL errors

If your Excel WORKDAY or WORKDAY.INTL formula returns an error, the reason is likely to be one of the following:

#NUM! error occurs if either:

  • a combination of the start_date and days arguments results in an invalid date, or
  • weekend argument in the WORKDAY.INTL function is invalid.

#VALUE! error occurs if either:

  • start_date or any value in holidays is not a valid date, or
  • days argument is non-numeric.

Excel NETWORKDAYS function

The NETWORKDAYS function in Excel returns the number of workdays between two dates, excluding weekends and, optionally, the holidays you specify.

The syntax of Excel NETWORKDAYS is intuitive and easy-to-remember:

NETWORKDAYS(start_date, end_date, [holidays])

The first two arguments are obligatory and the third one is optional:

  • Start_date - initial date from which to start counting working days.
  • End_date - the end of the period for which you are counting workdays.

Both the start date and end date are counted in the returned number of workdays.

  • Holidays - an optional list of holidays that should not to be counted as work days.

How to use NETWORKDAYS in Excel - formula example

Let's say you have a list of holidays in cells A2:A5, start dates in column B, end dates in column C, and you want to know how many workdays are between these dates. The appropriate NETWORKDAYS formula is easy to figure out:

=NETWORKDAYS(B2, C2, $A$2:$A$5)

Notice that the Excel NETWORKDAYS function returns a positive value when the start date is less than the end date, and a negative value if the end date is more recent than the start date (as in row 5):
Using the NETWORKDAYS function in Excel

Excel NETWORKDAYS.INTL function

Like NETWORKDAYS, Excel's NETWORKDAYS.INTL function calculates the number of weekdays between two dates, but lets you specify which days should be counted as weekend days.

The syntax of the NETWORKDAYS.INTL function is very similar to NETWORKDAYS', except it has the additional [weekend] parameter that indicates which days of the week should be counted as weekends.

NETWORKDAYS.INTL( start_date, end_date, [weekend], [holidays] )

The weekend argument can accept either a number or a string. The numbers and weekend strings are exactly the same as in the weekend parameter of the WORKDAY.INTL function.

The NETWORKDAYS.INTL function is available in Excel 365 - 2010.

Using NETWORKDAYS.INTL in Excel - formula example

Using the list of dates from the previous example, let's calculate the number of workdays between two dates with Sunday being the only weekend day. For this, you type number 11 in the weekend argument of your NETWORKDAYS.INTL formula or make a string of six 0's and one 1 ("0000001"):

=NETWORKDAYS.INTL(B2, C2, 11, $A$2:$A$5)

Or

=NETWORKDAYS.INTL(B2, C2, "0000001", $A$2:$A$5)

The following screenshot proves that both formulas return absolutely identical results.
Using the NETWORKDAYS.INTL function is Excel

How to highlight workdays in Excel

Using the WORKDAY and WORKDAY.INTL functions, you can not only calculate workdays in your Excel worksheets but also highlight them as your business logic requires. For this, you create a conditional formatting rule with either a WORKDAY or WORKDAY.INTL formula.

For example, in a list of dates in column B, let's highlight only future dates that are within 15 workdays from today's date, excluding two holidays in cells A2:A3. The most obvious formula that comes to mind is as follows:

=AND($B2>TODAY(), $B2<=WORKDAY(TODAY(), 15, $A$2:$A$3))

The first part of the logical test cuts off past dates, i.e. you check if a date is equal to or greater than today: $B2>TODAY(). And in the second part, you verify whether a date is no more than 15 weekdays in the future, excluding the weekend days and specified holidays: $B2<=WORKDAY(TODAY(), 15, $A$2:$A$3)

The formula looks correct, but once you create a rule based on it, you will realize that it highlights wrong dates:
Using the WORKDAY function in Excel conditional formatting

Let's try to figure out why that happens. The problem is not with the WORKDAY function, as someone may conclude. The function is right, but... what does it actually do? It returns a date 15 workdays from now, excluding weekend days (Saturday and Sunday) and holidays in cells A2:A3.

Okay, and what does the rule based on this formula do? It highlights ALL the dates that are equal to or greater than today and less than the date returned by the WORKDAY function. You see? All the dates! If you don't want to color the weekends and holidays, then you need to explicitly tell Excel not to. So, we are adding two more conditions to our formula:

As demonstrated in the below screenshot, the improved formula works perfectly:

=AND($B2>TODAY(), $B2<=WORKDAY(TODAY(), 15, $A$2:$A$3), COUNTIF($A$2:$A$3, $B2)=0, WEEKDAY($B2, 2)<6)
Highlighting workdays in Excel

As you see, the WORKDAY and WORKDAY.INTL functions make calculating workdays in Excel quick and easy. Of course, your real-life formulas are likely to be more sophisticated, but knowing the basics helps immensely, because you can remember only a small set of essential things and derive the rest. I thank you for reading and hope to see on our blog next week!

170 comments

  1. I want to calculate the days of a specific task. sometimes the task has not been done but I would like to develop a function that when the cell is blank to automatically use the current day. Can somebody help me with this.

  2. Hi,

    how can I calculate future days in excel excluding holidays and weekends? But I have to have real days in months ( 30 or 31)... do the function where I put 30 days doesn't help... example. start day is November 4th, I need date in 1y? and it should be November 6th 2017 because 4th and 5th is weekend. Hope you understood my question :)

  3. Hi Guys / Gals,

    I have learned alot here from this forums. So now, am having difficulties on how to computer for days that are adjustable.
    E.G.
    networkdays(today's date, end date, (holidays if any))

    Now what I want is for example the project finish early compare to the end date so how will it automatically adjust the dates. Thanks...

  4. And if it could apply to the whole document that would work too :)

  5. I am currently using the below formula in conditional formatting to shade today's date and the next 5 days as yellow in a column of like 30 dates. Since the weekends are never listed, can we make those days not factor in so the count can go Friday to Monday and continue shading conditionally?

    =AND(T1>TODAY() +1,T1<=(TODAY()+5))

    If it can count Friday as Day 1, Monday as Day 2, Tuesday as Day 3, etc.

  6. How is the formula look like if i would like to count two separate weekdays excluding hoiliday between a range date in one formula?

    Is it possible?

    Thank you for your help

  7. I am trying to calculate the difference between a start date(arrives)and time to finish date/time (goes to workshop), I need to exclude weekends also for example
    start date: 20/10/2016 10:45 (formatted in one cell)
    finish date: 25/10/2016 11:30 (formatted in one cell)
    I need to show complete total days, hours and mins (4d 0h 45m)
    I have put this together with a little help but is quite right:=NETWORKDAYS(A13,B13)&" days "&TEXT(B13-A13,"h"" h ""m"" m """)
    if the start date and finish date are the same and the only difference is the time/ hour I keep getting 1 day plus the hours (1d 3h 45m not 0d 3h 45m as I need)
    any help would be great, thanks, David

  8. =IFERROR(NETWORKDAYS([@Received],[@[todays''s date]])-1,"N/A") I am using this fomrula to calculate a work date, and where there are blanks I would like it say N/A but it is placing "30472" on the line, how do I correct that?

  9. Help!
    I'm hoping for a solution to calculate the number of NETWORKDAYS between two dates, but to only display a value of zero or greater.

    Example: we want to count the number of days the contract delayed start of a project.

    Value A would be date of process kickoff.
    Value B represents date worker completed their paperwork.
    Value C represents when the contract was signed.
    We are trying to count how many days from when value B occurred until Value C.

    In many cases Value C happened first so it did not cause a delay. Therefore i need the Formula to return a value of zero rather than a negative number.

  10. For Above Example if for all process on Air cooler product required 25 hrs which is into qty then from current date what is the actual target date for air cooler that date should be shown in targeted date. At the time of calculation of all hrs consider above points :

    1.Total Working Hrs are 8

    2.Saturday is the Weekly Off.

    3.If holiday in between then holidy list also maintain

  11. dear sir / madam,

    could you pl give me an idea, how to find the number of days between the days,

    i.e.
    saturday - thursday = 5

    Thursday - Wednessday = 6

    b/r
    gsr

  12. I have a scenario where I want to count the number of WORKING days a contractor has been on site from a start date to today (excluding weekends and public holidays), and then how many days of these that there has been works happening on site.

    I have set up the data in a table, with running dates in column A(i.e. as a diary type page in format Thursday,17th March 2016
    ), highlighted the dates in Red that are public holidays, then column B showing a number (0= men on site, 1= 1 man on site etc)
    Can you help?

  13. I am also trying to figure out how to use this while including weekend days (7 day work week). Essentially I'm in a long-term medical facility and we want to know how many dates patients are served between admission and resolution of medical issue, but this can occur on weekends as well. I can't just add dates as in the example above for the same question, because the admission dates are not consistent to always add 2 days for the weekend, for instance. I'm not sure how to create a rule to bypass this situation. (I tried inputting 0000000 for weekend parameters, but it didn't work).

    Thanks!
    -jenny

    • Refer to this reply:

      CC says:
      February 9, 2016 at 6:07 pm
      I was looking for this also and got this answer from a co-worker. You just add the number of days you need from the date in the cell, ex. =A1+25 and it should return the date that is 25 days from the date you entered. Worked for me.

      • What about wanting to use that formula but excluding holidays still?

  14. Great it works. Thanks for providing with examples.

  15. Hi,

    I have scenario here. I have some engineers, who are working in two countries every month. I need to get available hours of each engineer in each country. Problem is, public holidays and working days of both countries are different. say in Country A, Saturday and Sunday are off, whereas in other country Friday and Saturday are off. similarly, public holidays are also different. Can someone guide me what logic should I use to cater this problem.

    Regards.
    Irfan Rasheed

    • =(NETWORKDAYS(AS3,AT3,$AY$3:$AY$4)-1)*("17:30"-"8:30")+IF(NETWORKDAYS(AT3,AT3,$AY$3:$AY$4),MEDIAN(MOD(AT3,1),"17:30","8:30"),"17:30")-MEDIAN(NETWORKDAYS(AS3,AS3,$AY$3:$AY$4)*MOD(AS3,1),"17:30","8:30")

      AS3,AT3 = Start date, End date respectively
      $AY$3:$AY$4 = Range of holidays
      "17:30"-"8:30" = Shift end time to start time

      Worked for us!!!

      • I have updated this formula as below to got days and hours

        =((NETWORKDAYS.INTL(C5,D5,7,$B$2:$B$19)-1)*("18:00"-"9:00")+IF(NETWORKDAYS.INTL(D5,D5,7,$B$2:$B$19),MEDIAN(MOD(D5,1),"18:00","9:00"),"18:00")-MEDIAN(NETWORKDAYS.INTL(C5,C5,7,$B$2:$B$19)*MOD(C5,1),"18:00","9:00"))&" Days "&HOUR((NETWORKDAYS.INTL(C5,D5,7,$B$2:$B$19)-1)*("18:00"-"9:00")+IF(NETWORKDAYS.INTL(D5,D5,7,$B$2:$B$19),MEDIAN(MOD(D5,1),"18:00","9:00"),"18:00")-MEDIAN(NETWORKDAYS.INTL(C5,C5,7,$B$2:$B$19)*MOD(C5,1),"18:00","9:00"))&" Hours"

        But the format is wrong like .0522225 Days 1 Hours

  16. My results for the NETWORKDAYS formula is not showing up as a numerical number. Rather in a date format m/d/yy.

    Start Date: 3/24/16
    End Date: 8/1/16
    Result: 4/2/00 <-- I don't know what this means.

    In both the start and end dates, I put in the date function =DATE(YYYY,M,D)

    Do I have my cells formatted wrong? How can I get my results to show as a number?

    • Hello,

      I ran into that default issue. Just need to format cells as a number to see your results.

      Hope that help ---Cheers!

  17. Hello All,

    Any review update on my above listed query,

    Were, the parameters are as listed below;
    L6 = contains 1st task completed date 26-Mar-2016
    = for which i added 1 day, assuming that next 2nd task will start on the next day as L6 + 1
    C32= is the estimated amount of effort needed to complete 2nd task in hours, which again is converted to days by dividing with 7.5 as C32/7.5
    sheet1!B2:B16= contains yearly official exception holidays.....Kindly review and confirm a solution....Once again thank you...

  18. Hi,

    Am working with =WORKDAY.INTL(L6+1,C32/7.5,11,Sheet1!B2:B16) as listed below for project schedules the problem noticed is with the weekend when listed as 11 its not calculating as desired see in the month of march 27th is sunday. Even after assigning the 11 the result is given as 27th march 2016. which as per above weekends dates should result as 28th-Mar-2016.. Please review and suggest a solution. Thank you.

  19. Hello,

    What if we WANT to include the weekends? So our total workdays would be 7 instead of 5..

    • I was looking for this also and got this answer from a co-worker. You just add the number of days you need from the date in the cell, ex. =A1+25 and it should return the date that is 25 days from the date you entered. Worked for me.

  20. I am having difficulties understandig the logic behind NETWORKDAYS being unable to return 0 (zero) working days when one uses the very same dates for start_date and end_date.

    Also, WORKDAYS seems inconsistent with NETWORKDAYS as it allows 0 (zero) as its "days" argument.

    Can you help me?

    • Hello, Paulo,

      This is the way the two functions are implemented. Sorry, it's hard to say why Microsoft decided not to coordinate them.

    • Hello Paulo, you need to include -1 at the end of the formula. this is because excel calculation start calculate the start day. so you will get 1 day even if your start day and end day is the same day. example : =NETWORKDAYS(P12;C12)-1

      • So adding the -1 is helpful for dates that land on a weekday, but for dates that land on a weekend the formula already has the weekend exclusion built in so if you add the -1 to the end of the formula it will subtract an extra day that you don't want subtracted. How do you solve for this when you don't want to include the start date in the count?

Post a comment



Thank you for your comment!
When posting a question, please be very clear and concise. This will help us provide a quick and relevant solution to
your query. We cannot guarantee that we will answer every question, but we'll do our best :)