Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / Setup / April 2007

Tip: Looking for answers? Try searching our database.

changing weekend days

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Otaibi - 23 Apr 2007 09:28 GMT
Hi
I am trying to use the networkdays but I need to change the weekend days
from Saturday and Sunday to Thursday and Friday
Niek Otten - 23 Apr 2007 10:00 GMT
Here's a VBA solution from Ron Rosenfeld

Signature

Kind regards,

Niek Otten
Microsoft MVP - Excel
     ' ===========================
     ' Ron Rosenfeld
     ' Copied form Google's Newsgroup Archives April 27, 2006

     Function NWrkDays(StartDate As Date, EndDate As Date, _
         Optional Holidays As Range = Nothing, _
         Optional WeekendDay_1 As Integer = 1, _
         Optional WeekendDay_2 As Integer = 7, _
         Optional WeekendDay_3 As Integer = 0) As Long
     ' Sunday = 1; Monday = 2; ... Saturday = 7

     'credits to Myrna

         Dim i As Long
         Dim Count As Long
         Dim H As Variant
         Dim w As Long
         Dim SD As Date, ED As Date
         Dim DoHolidays As Boolean
         Dim NegCount As Boolean

         DoHolidays = Not (Holidays Is Nothing)

         SD = StartDate: ED = EndDate
         If SD > ED Then
             SD = EndDate: ED = StartDate
             NegCount = True
         End If

         w = Weekday(SD - 1)
         For i = SD To ED
           Count = Count + 1
           w = (w Mod 7) + 1
           Select Case w
             Case WeekendDay_1, WeekendDay_2, WeekendDay_3
               Count = Count - 1
             Case Else
               If DoHolidays Then
                 If IsNumeric(Application.Match(i, Holidays, 0)) Then _
                   Count = Count - 1
               End If
           End Select
         Next i
         If NegCount = True Then Count = -Count
         NWrkDays = Count
       End Function

     Function WrkDay(StartDate As Date, ByVal NumDays As Long, _
         Optional Holidays As Range = Nothing, _
         Optional WeekendDay_1 As Integer = 1, _
         Optional WeekendDay_2 As Integer = 7, _
         Optional WeekendDay_3 As Integer = 0) As Date

     ' Sunday = 1; Monday = 2; ... Saturday = 7

       Dim i As Long
       Dim TempDate As Date
       Dim Stp As Integer
       Dim NonWrkDays As Long
       Dim temp As Long, SD As Date, ED As Date

       Stp = Sgn(NumDays)

       'Add NumDays
       TempDate = StartDate + NumDays

       'Add Non-Workdays

       Do While Abs(NumDays) <> temp
         SD = Application.WorksheetFunction.Min(StartDate + Stp, TempDate)
         ED = Application.WorksheetFunction.Max(StartDate + Stp, TempDate)

         temp = NWrkDays(SD, ED, Holidays, WeekendDay_1, WeekendDay_2, WeekendDay_3)
         TempDate = TempDate + NumDays - Stp * (temp)
       Loop

       WrkDay = TempDate
     End Function
     ' ==========================

| Hi
| I am trying to use the networkdays but I need to change the weekend days
| from Saturday and Sunday to Thursday and Friday
Bob Phillips - 24 Apr 2007 09:52 GMT
=end_date-start_date+1-INT((WEEKDAY(start_date-1)+end_date-start_date)/7)

Signature

---
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my addy)

> Hi
> I am trying to use the networkdays but I need to change the weekend days
> from Saturday and Sunday to Thursday and Friday
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.