Contar días hábiles
Tengo que contar 30 dias hábiles a partir de una fecha. Los sábados deben contarse como hábiles. Tengo una lista de dias festivos en el rango D2:D15. La fecha de inicio está en A2. La fórmula empleada es =DIA.LAB(A2;30;$D$2:$D$15). ¿Qué puedo hacer para que no cuente los sábados?
esta pregunta ya la habian hecho, y dieron como respuesta esta funcion
Function DiaLab_conSabados(inicial As Date, dias As Integer, festivos As Range) As Date
Dim final As Date
If festivos.Columns.Count > 1 Then
DiaLab_conSabados = final
Exit Function
End If
final = inicial + DateDiff("d", inicial, inicial + dias)
dia = inicial
Do While dia <= final
If WeekDay(dia) = 1 Then final = final + 1
dia = dia + 1
Loop
If WeekDay(final) = 1 Then final = final + 1
For Each Row In festivos.Rows
If IsDate(Row) Then
If inicial <= Row And final >= Row Then
final = final + 1
If WeekDay(final) = 1 Then final = final + 1
End If
End If
Next Row
Call valida(final, festivos)
DiaLab_conSabados = final
End Function
Sub valida(final As Date, festivos As Range)
Dim Esfestivo As Boolean
For Each Row In festivos.Rows
If IsDate(Row) And Row = final Then
Esfestivo = True
End If
Next Row
If WeekDay(final) = 1 Or Esfestivo Then
final = final + 1
Call valida(final, festivos)
End If
End Sub
Propiedad de Cesar Mera
Y en realidad no entendí donde ubicarla en excel para poder hacerla funcionar, si alguien por favor me puede ayudar... Se lo agradeceré
Saludos!
esta pregunta ya la habian hecho, y dieron como respuesta esta funcion
Function DiaLab_conSabados(inicial As Date, dias As Integer, festivos As Range) As Date
Dim final As Date
If festivos.Columns.Count > 1 Then
DiaLab_conSabados = final
Exit Function
End If
final = inicial + DateDiff("d", inicial, inicial + dias)
dia = inicial
Do While dia <= final
If WeekDay(dia) = 1 Then final = final + 1
dia = dia + 1
Loop
If WeekDay(final) = 1 Then final = final + 1
For Each Row In festivos.Rows
If IsDate(Row) Then
If inicial <= Row And final >= Row Then
final = final + 1
If WeekDay(final) = 1 Then final = final + 1
End If
End If
Next Row
Call valida(final, festivos)
DiaLab_conSabados = final
End Function
Sub valida(final As Date, festivos As Range)
Dim Esfestivo As Boolean
For Each Row In festivos.Rows
If IsDate(Row) And Row = final Then
Esfestivo = True
End If
Next Row
If WeekDay(final) = 1 Or Esfestivo Then
final = final + 1
Call valida(final, festivos)
End If
End Sub
Propiedad de Cesar Mera
Y en realidad no entendí donde ubicarla en excel para poder hacerla funcionar, si alguien por favor me puede ayudar... Se lo agradeceré
Saludos!
1 respuesta
Respuesta de Cadipas spain
1