Ms access 查找给定日期范围内的工作日/周末数
我试图找到一些VBA代码,以使用Access VBA确定给定日期范围内的周天数和周末天数 例如:Ms access 查找给定日期范围内的工作日/周末数,ms-access,vba,date,Ms Access,Vba,Date,我试图找到一些VBA代码,以使用Access VBA确定给定日期范围内的周天数和周末天数 例如: Begin Date - 1/1/2012 End Date - 1/31/2012 结果应该是: Week days - 22 Weekend days - 9 有人能帮忙吗?这两个函数将计算工作日和周末的天数: Function NumWeekendDays(dBegin As Date, dEnd As Date) As Long Dim iPartial As Integer
Begin Date - 1/1/2012
End Date - 1/31/2012
结果应该是:
Week days - 22
Weekend days - 9
有人能帮忙吗?这两个函数将计算工作日和周末的天数:
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
函数NumWeekendDays(dBegin As Date,dEnd As Date)的长度
Dim iPartial作为整数
黯淡的日子和漫长的日子一样长
昏暗的周末和白天一样长
iPartial=DateDiff(“d”,dBegin,dEnd+1)模式7
lBeginDay=6-DatePart(“w”,dBegin,vbMonday)
lNumWeekendDays=(日期差(“d”,dBegin,dEnd+1)\7)*2
如果iPartial>0且lBeginDay-iPartial<0,则
如果lBeginDay=-1,则
lNumWeekendDays=lNumWeekendDays+1
ElseIf iPartial-lBeginDay=1则
lNumWeekendDays=lNumWeekendDays+1
其他的
lNumWeekendDays=lNumWeekendDays+2
如果结束
如果结束
NumWeekendDays=lNumWeekendDays
端函数
函数NumWeekDays(dBegin As Date,dEnd As Date)的长度为
NumWeekDays=DateDiff(“d”,dBegin,dEnd+1)-NumWeekendDays(dBegin,dEnd)
端函数
注意:我发现通过计算
lBeginDay
变量来计算部分周周末最简单,因此如果开始日期是星期一,lBeginDay==5
。。。如果开始日期是星期五,lBeginDay==1
,等等。其他变体也应适用。您可以使用NETWORKDAYS功能吗?伪代码:通过两个日期的Datediff的TotalDays在两个日期上运行NETWORKDAYS函数,从周末的TotalDays减去工作日。NETWORKDAYS函数是一个有价值的Excel工作表函数,但在VBA中不存在。此示例代码中存在错误。如果结束日期是星期五,则返回2。如果iBeST>0和LGBeDay-IpRead 0和LGBEDYAI-IOPTION<0,那么“BAT”BRAD-我修复了BUG。谢谢!