如何计算date,但排除微软访问周末?

我为一个住房build设者工作,我正在努力帮助一个同事得到一个公式,可以计算出3天的date,但排除周末。

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

这是她正在使用的当前公式,她希望得到这个来计算date,但排除周末

我将创build一个表,它将包含所有(银行/公共/特殊)假期。 像(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 

然后一个函数来计算这些date。

 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 

当您需要将date添加n 天时 ,您只需使用类似于DateAdd函数。 您不指定string标识符,因为这默认只添加几天。 然后第一个参数是要添加的天数。 第二个是date需要添加的date。

代码工作,一次循环一天,检查是否是周末(1 – vbSunday,或7 – vbSaturday),或者如果它列在特殊的rest表。 如果是rest日或周末,可以在不增加柜台的情况下增加一天。 当计数器等于您通过的数字时,循环将终止。