Calcular el próximo día laborable en OpenOffice Calc

Calcular días laborables

También se ha preguntado en varios foros el modo de calcular el próxima día laborable dada una fecha inicial y un plazo de días laborables, por ejemplo, para calcular hasta cuando se puede entregar un documento, o la fecha de finalización de una obra o servício. Al igual que en el anterior caso visto, no es sencillo ya que en cada país, región e incluso ciudad son distintos los días festivos, y a veces, se consideran festivos los sábados y a veces no.

Calc incorpora la función DÍA.LAB que permite calcular la próxima fecha laborable con estos datos y  teniendo en cuenta una lista de días festivos que se indica en un rango de celdas, pero tiene como  inconveniente que considera los sábados y domingos como festivos siempre.

Si no es tu caso, aquí te ofrecemos una solución.

Se pueden utilizar fórmulas que calculen el próximo día laborales de un rango de fechas tomando los sábados como no festivos, pero siempre va a ser muy complicado dar con la fórmula correcta.

Con una macro puede ser muy sencillo. La siguiente macro permite calcular el próximo día laborable dada una fecha inicial, un número de días de plazo y una lista de festivos. Permite opcionalmente definir si los sábados se consideran festivos (por defecto considera que no).

Function ProximoDiaLaborable( FechaInicial, nDiasLaborables, _
RangoFestivos, Optional SabadosSonFestivos As Boolean) As Date
Dim Fecha As Date, n As Long, w as integer

If IsMissing(SabadosSonFestivos) Then SabadosSonFestivos = False

Fecha = FechaInicial

For n=0 To nDiasLaborables
Fecha = Fecha+1
w = Weekday (Fecha)
If w=1 Then ' Es Domingo
n = n-1
ElseIf w=7 AND SabadosSonFestivos Then ' Es Sábado y son festivos
n = n-1
Else
For Each y In RangoFestivos
If Fecha=y Then
' Es festivo
n = n-1
Exit For
EndIf
Next
EndIf
Next

ProximoDiaLaborable = Fecha

End Function

Suponiendo que dispongamos de una celda con la fecha inicial, por ejemplo, B3, un plazo de 10 días laborables, que los festivos estén declarados en el rango de celdas X3:X30, y que los sábados no sean considerados festivos, podemos insertar en una celda la siguiente fórmula:

=ProximoDiaLaborable( B3; 10; X3:X30 )

Si los sábados deben ser considerados festivos, podemos insertar en una celda la siguiente fórmula:

=ProximoDiaLaborable( B3; 10; X3:X30; VERDADERO )

Un ejemplo:

2 comentarios

Comentario De: juan carlos [Visitante]

estimado, pase ese mismo macro a una hoja de calc y sin dejar vedadero me cuenta el dia sabado como festivo, ejemplo: dejo la fecha 17/09/2014 (miercoles) y 3 dias y me arroja el dia 22/09/2014 (lunes) cuando deberia arrojar la fecha 20/09/2014 (sabado) me das una mano? necesito esto por que en mi trabajo debemos informar e dias habiles plazos de hasta 90 dias y solo tenemos openoffice

18.09.14 @ 04:40 Reply to this comment
Comentario De: [Miembro]

Hola Juan Carlos

Hemos detectado un error en la macro, así que mejor la sustituyes por esta nueva versión actualizada (ya se ha corregido en el texto del artículo).

Saludos, y gracias por el aviso.

18.09.14 @ 15:37 Reply to this comment


Form is loading...