我爲一個家庭建造者工作,我試圖幫助一名同事拿出一個公式,可以計算一個3天的日期,但排除週末。如何計算日期但排除微軟訪問中的週末?
DateAdd("d",3,[TrussOrderDate])
這是她用的是當前的公式,她一直在尋找讓這個來計算日期,但不包括週末
我爲一個家庭建造者工作,我試圖幫助一名同事拿出一個公式,可以計算一個3天的日期,但排除週末。如何計算日期但排除微軟訪問中的週末?
DateAdd("d",3,[TrussOrderDate])
這是她用的是當前的公式,她一直在尋找讓這個來計算日期,但不包括週末
我將創建一個表,將容納所有的(銀行/公共/特別)假期。喜歡的東西(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
當你需要添加ň的天一個日期,只需使用,類似於DateAdd函數數量。您不指定字符串標識符,因爲它默認只添加幾天。然後第一個參數是要添加的天數。第二個是需要添加日期的日期。
該代碼的工作原理是,一次循環一天,檢查它是否是週末(1 - vbSunday或7 - vbSaturday),或者它是否列在特殊的休息日表中。如果是休息日或週末,可以在不增加櫃檯的情況下增加一天。當計數器等於您通過的數字時,循環將終止!
我認爲在'do'循環中的'if'之前放置'tmpDate = DateAdd(「d」,1,tmpDate)'更準確。 –
使用日曆表通常是一個好主意。它可以讓你填寫假日的所有日子,而不僅僅是週末。 – Fionnuala