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

2 respuestas

Respuesta
1
Realmente no entiendo tu pregunta. Tu quieres una función a la cual le ingreses una fecha inicial, y que te muestre el numero de días laborales incluyendo los sábados, ¿pero sin ingresar fecha final?. Esto no se puede hacer porque seria una fórmula al infinito. Necesariamente debes ingresarle algún parámetro como final, el mes, o el año.
Por favor explicame mejor lo que quieres para poder ayudarte.
Yo quiero una función a la cual le ingreso una fecha inicial, y el numero de días laborales incluyendo los sábados que necesito, y me tiene que calcular la fecha final resultante de sumar a la inicial el número de días laborables introducidos.
Gracias, y perdón por mi falta de claridad en la exposición del problema
Nada100:
Prueba con esta macro y me avisas, es más sencilla y creo que funciona bien.
Saludos
_ _ _ _ _ _ _ _ _ _ _ _ _
Sub diaslaborales()
Dim Fecha_inicial As Date
Dim Fecha_Final As Date
Dim Dias As Long
Fecha_inicial = InputBox("DIGITE LA FECHA INICIAL", FECHA, "01-11-2006")
Dias = InputBox("Digite el numero de días", Dias, 0)
Fecha_Final = Fecha_inicial + Dias
For i = Fecha_inicial To Fecha_Final
If i Mod 7 = 1 Then
NoLaborales = NoLaborales + 1
End If
Next i
Fecha_Final2 = Fecha_inicial + Dias + NoLaborales - 1
For y = Fecha_inicial To Fecha_Final2
If y Mod 7 = 1 Then
NoLaborales2 = NoLaborales2 + 1
End If
Next y
Fecha_Final = Fecha_Final + NoLaborales2 - 1
MsgBox ("LA FECHA FINAL ES " & Fecha_Final)
End Sub
Si en vez de macro pudiera ser con una función equivalente a día.lab pero que tenga en cuenta los sábados me serviría mejor gracias
Prueba esta y me cuentas.
Sub pru()
MsgBox DiasLaborablesYSabados("01-11-2006", "14-11-2004", Range("i13:i16"))
End Sub
Function DiasLaborablesYSabados(Fecha_inicial As Date, Fecha_Final As Date, Optional Festivos As Range) As Date
Dim Laborables As Long
Dim i As Long
Dim c As Variant
Dim F As Long
Dim esta As Boolean
esta = False
Laborables = 0
Dim Dias As Long
Dias = InputBox("Digite el numero de días", Dias, 0)
Fecha_Final = Fecha_inicial + Dias
For i = Fecha_inicial To Fecha_Final
If i Mod 7 = 1 Then
NoLaborales = NoLaborales + 1
End If
Next i
Fecha_Final2 = Fecha_inicial + Dias + NoLaborales - 1
For y = Fecha_inicial To Fecha_Final2
If y Mod 7 = 1 Then
NoLaborales2 = NoLaborales2 + 1
End If
Next y
Fecha_Final = Fecha_Final + NoLaborales2 - 1
'End If
DiasLaborablesYSabados = Fecha_Final
End Function
Respuesta
1
Ya te había pasado esta macro; ¿Cambió algo que ahora no te funciona?
Igualmente te reenvío el archivo por mail
Me gustaría me pasaras el archivo donde tienes ya implementada esta función.
Gracias
[email protected]
Disculpame la demora; si aún te sirve, pásame un mail y te paso un archivo donde tengo ya implementada esta función

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas