如何计算日期,但在微软访问中排除周末?

时间:2015-01-07 16:09:31

标签: database excel ms-access

我为一个房屋建筑工人工作,我正在努力帮助一个同事获得一个可以计算3天的日期但不包括周末的公式。

DateAdd("d",3,[TrussOrderDate])   

这是她正在使用的当前公式,她希望得到这个来计算日期,但不包括周末

1 个答案:

答案 0 :(得分:3)

我会创建一个表,它将保存所有(银行/公共/特殊)假期。像(tbl_BankHolidays),

这样的东西
holID   |   bankDate    |   bankHoliday     |   workDay
--------+---------------+-------------------+-----------
1       |   01/01/2014  |   New years day   |   Wednesday
2       |   18/04/2014  |   Good Friday     |   Friday
3       |   21/04/2014  |   Easter Monday   |   Monday
4       |   05/05/2014  |   Early May       |   Monday
5       |   26/05/2014  |   Spring holiday  |   Monday
6       |   25/08/2014  |   Summer holiday  |   Monday
7       |   25/12/2014  |   Christmas Day   |   Thursday
8       |   26/12/2014  |   Boxing Day      |   Friday
9       |   01/01/2015  |   New Year’s Day  |   Thursday
:
:
16      |   28/12/2015  |   Boxing Day      |   Monday

然后是一个计算这些日期的函数。

Function addWorkDays(addNumber As Long, Date2 As Date) As Date
'********************'
'Code Courtesy of    '
'  Paul Eugin        '
'********************'

    Dim finalDate As Date
    Dim i As Long, tmpDate As Date
    tmpDate = Date2
    i = 1
    Do While i <= addNumber
        If Weekday(tmpDate) <> 1 And Weekday(tmpDate) <> 7 And _
            DCount("*", "tbl_BankHolidays", "bankDate = " & CDbl(tmpDate)) = 0 Then i = i + 1
        tmpDate = DateAdd("d", 1, tmpDate)
    Loop

    addWorkDays = tmpDate

End Function

当您需要将 n 添加到日期时,您只需使用,类似于DateAdd函数。您没有指定字符串标识符,因为这默认为仅添加天数。然后第一个参数是要添加的天数。第二个是需要添加日期的日期。

代码工作,通过一次循环一天,检查它是否是周末(1 - vbSunday,或7 - vbSaturday),或者它是否在特殊日子列表中列出。如果是休息日或周末,请在不增加计数器的情况下添加一天。当计数器等于你传递的数字时,循环将终止!