Business computations always involve the computation of Net-Work days, and if you are using Excel, you immediately find a solution in NetworkDays function. I have myself used it extensively in my computational work. But, for reasons best known to Microsoft, they have kept this function as part of Analysis Toolpack add-in. Well, to makes obviously no difference as the addin is a part of standard Office shipment. But, when you are developing a spreadsheet to be used by many, you are not very sure whether they have the addin installed/active.

Adding a check for its presence is definitely a good idea, but depending on the Analysis ToolPack just for NetworkDays functionality is not worth it, atleast in my purview. Here is the code of a custom function that does the same for you, and in cases, can remove your dependency on ATP.

Public Function MyNetWorkDays(ByVal startDate As Date, ByVal endDate As Date, Optional ByVal holidays As range = Nothing) As Integer

Dim diff As Integer, weeks As Integer, ed As Integer, sd As Integer, delta As Integer

Dim swap As Boolean

swap = False

MyNetWorkDays = 0: delta = 0

If endDate < startDate Then
'swap the dates
Dim temp As Date
temp = endDate
endDate = startDate
startDate = temp
swap = True
End If

diff = endDate - startDate
ed = Weekday(endDate)
sd = Weekday(startDate)
weeks = diff \ 7

If ed = sd Then
If Not (ed = 1 Or ed = 7) Then
delta = 1
End If
ElseIf ed > sd Then
If ed = 7 Then ed = 6
If sd = 1 Then sd = 2
delta = ed - sd + 1
Else
delta = 7 - (sd - ed) - 1
End If

MyNetWorkDays = (weeks * 5) + delta

' check for holidays
If Not holidays Is Nothing Then
For Each holiday In holidays
wh = Weekday(holiday)
If wh = 1 Or wh = 7 Then

Else
If startDate <= holiday And holiday <= endDate Then
MyNetWorkDays = MyNetWorkDays - 1
End If
End If
Next
End If

If swap Then
MyNetWorkDays = 0 - MyNetWorkDays
End If

End Function

Hope this helps!