Estas dos funciones se calculará el número de días de semana y días de fin de semana:
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
Nota: Me pareció más sencilla de calcular los días de fin de semana-semana parcial mediante el cálculo de la variable lBeginDay
de modo que si la fecha de inicio fue Lunes, lBeginDay == 5
... si la fecha de inicio fue el viernes, lBeginDay == 1
, etc. Otras variaciones también deberían funcionar.
¿Se puede usar la función de DÍAS EN LA RED? Pseudo Código: TotalDays a través de un DATEDIFF de dos fechas función Ejecutar DIAS.LAB en dos fechas Menos días de trabajo de Totaldays para los días de fin de semana. – jetgrrrl
La función NETWORKDAYS es una valiosa función de hoja de cálculo de Excel, pero no existe en VBA. –