View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.misc
Ron Rosenfeld
 
Posts: n/a
Default Calculate Business without the use of the Add-In (Analysis Tool-Pak)

On Wed, 1 Feb 2006 17:25:39 -0600, dannyboy213
wrote:


Please do.

"Ron Rosenfeld" wrote in message
.. .
On Wed, 1 Feb 2006 15:01:37 -0600, dannyboy213
wrote:


How do I calculate business days without using the analysis

Tool-Pak.

Is it permissible to use a UDF (User Defined Function)? It would

get
distributed with the workbook.

I had written one for just such an issue, and it basically mimics

the
Workday
Function.

If that would be helpful, I'd be happy to post it again.


--ron



To enter, <alt<F11 opens the VB Editor.

Ensure your project is highlighted in the Project Explorer window, then
Insert/Module and paste the code below into the window that opens.

To use, enter =WD(start_date, num_days, [holidays]) into some cell.

The optional 'holidays' argument must be entered as a cell (range) reference,
however.

==================================
Function WD(StartDate As Date, ByVal NumDays As Long, _
Optional Holidays As Range = Nothing) As Date

'Workday function without Analysis Toolpak
'However, Holidays must be in a range

Dim i As Long
Dim TempDate As Date
Dim c As Range
Dim Stp As Integer

Stp = Sgn(NumDays)
TempDate = StartDate
For i = Stp To NumDays Step Stp
TempDate = TempDate + Stp
If Weekday(TempDate) = vbSaturday Then _
TempDate = TempDate + Stp - (Stp 0)
If Weekday(TempDate) = vbSunday Then _
TempDate = TempDate + Stp + (Stp < 0)

If Not Holidays Is Nothing Then
Do Until Not IsError(Application.Match(CDbl(TempDate), Holidays, 0)) = False
If IsError(Application.Match(CDbl(TempDate), Holidays, 0)) = False Then
TempDate = TempDate + Stp
If Weekday(TempDate) = vbSaturday Then _
TempDate = TempDate + Stp - (Stp 0)
If Weekday(TempDate) = vbSunday Then _
TempDate = TempDate + Stp + (Stp < 0)
End If
Loop
End If
Next i

WD = TempDate
End Function
===================================


--ron