Найти количество дней недели / выходных в заданном диапазоне дат - PullRequest
5 голосов
/ 09 января 2012

Я пытаюсь найти некоторый код VBA для определения количества дней недели и выходных дней в заданном диапазоне дат с помощью Access VBA.

Например:

Begin Date - 1/1/2012
End Date - 1/31/2012

Результат должен быть:

Week days - 22
Weekend days - 9

Может кто-нибудь помочь с этим?

1 Ответ

5 голосов
/ 09 января 2012

Эти две функции будут вычислять количество дней недели и выходных:

Function NumWeekendDays(dBegin As Date, dEnd As Date) As Long
    Dim iPartial As Integer
    Dim lBeginDay As Long
    Dim lNumWeekendDays As Long

    iPartial = DateDiff("d", dBegin, dEnd + 1) Mod 7
    lBeginDay = 6 - DatePart("w", dBegin, vbMonday)

    lNumWeekendDays = (DateDiff("d", dBegin, dEnd + 1) \ 7) * 2
    If iPartial > 0 And lBeginDay - iPartial < 0 Then
        If lBeginDay = -1 Then
            lNumWeekendDays = lNumWeekendDays + 1
        ElseIf iPartial - lBeginDay = 1 Then
            lNumWeekendDays = lNumWeekendDays + 1
        Else
            lNumWeekendDays = lNumWeekendDays + 2
        End If
    End If

    NumWeekendDays = lNumWeekendDays

End Function

Function NumWeekDays(dBegin As Date, dEnd As Date) As Long
    NumWeekDays = DateDiff("d", dBegin, dEnd + 1) - NumWeekendDays(dBegin, dEnd)
End Function

Примечание. Мне показалось, что проще всего вычислять дни выходных с частичной неделей, вычисляя переменную lBeginDay, так что еслидата начала была понедельник, lBeginDay == 5 ... если дата начала была пятница, lBeginDay == 1 и т. д. Другие варианты также должны работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...