Días laborables
He encontrado una macro que me calcula los días laborables (de lunes a sábados)que hay entre dos fechas, descontando festivos.
Yo quisiera encontrar una función equivalente a DÍA.LAB PERO QUE TUVIERA EN CUENTA EL SÁBADO COMO LABORAL. Es decir dada una fecha inicial sumar un numero de días laborables conocidos y que calculara la fecha final.
Si sirve de ayuda, para resolver mi problema, esta es la macro que he encontrado:
Option Explicit
Sub pru()
MsgBox DiasLaborablesYSabados("29-10-2004", "14-11-2004", Range("i13:i16"))
End Sub
Function DiasLaborablesYSabados(Fecha_Inicial As Date, Fecha_Final As Date, Optional Festivos As Range) As Long
Dim Laborables As Long
Dim i As Long
Dim c As Variant
Dim F As Long
Dim esta As Boolean
esta = False
Laborables = 0
If Festivos Is Nothing Then
For i = Fecha_Inicial To Fecha_Final
If i Mod 7 <> 1 Then
Laborables = Laborables + 1
End If
Next i
Else
For i = Fecha_Inicial To Fecha_Final
If i Mod 7 <> 1 Then
esta = False
For Each c In Festivos
F = CDate(c)
If i = F Then esta = True: Exit For
Next c
If Not esta Then Laborables = Laborables + 1
End If
Next i
End If
DiasLaborablesYSabados = Laborables
End Function
Yo quisiera encontrar una función equivalente a DÍA.LAB PERO QUE TUVIERA EN CUENTA EL SÁBADO COMO LABORAL. Es decir dada una fecha inicial sumar un numero de días laborables conocidos y que calculara la fecha final.
Si sirve de ayuda, para resolver mi problema, esta es la macro que he encontrado:
Option Explicit
Sub pru()
MsgBox DiasLaborablesYSabados("29-10-2004", "14-11-2004", Range("i13:i16"))
End Sub
Function DiasLaborablesYSabados(Fecha_Inicial As Date, Fecha_Final As Date, Optional Festivos As Range) As Long
Dim Laborables As Long
Dim i As Long
Dim c As Variant
Dim F As Long
Dim esta As Boolean
esta = False
Laborables = 0
If Festivos Is Nothing Then
For i = Fecha_Inicial To Fecha_Final
If i Mod 7 <> 1 Then
Laborables = Laborables + 1
End If
Next i
Else
For i = Fecha_Inicial To Fecha_Final
If i Mod 7 <> 1 Then
esta = False
For Each c In Festivos
F = CDate(c)
If i = F Then esta = True: Exit For
Next c
If Not esta Then Laborables = Laborables + 1
End If
Next i
End If
DiasLaborablesYSabados = Laborables
End Function
2 respuestas
Respuesta de andron
1
Respuesta
1