El post del ejemplo que publique anteriormente para calcular fechas en base a días laborales solo aplica para Excel 2007 y posteriores, sin embargo eso no es motivo para preocuparse, con este sencillo Macro conseguimos emular las mismas cualidades de la función dia.lab e incluso incluir la posibilidad de tener semanas con 6 días laborales (como la función dia.lab de Excel 2010)
Para ver como activar, utilizar y autorizar Macros en tu ordenador ve el siguiente post: Tip: Macros, que son y como activar y ejecutar Macros en excel
Function dialab(fechai As Date, dias As Integer, Optional feriados As Range) Dim diafer As Range 'se declara las celdas en el rango de feriados Dim semanalab As Integer semanalab = 5 'cuantos dias laborables a la semana hay On Error Resume Next 'si el rango esta vacio continuar For Each diafer In feriados 'para cada celda en el rango cadena = cadena & diafer & ";" 'se construye una cadena con las fechas Next diafer Do 'repetir la siguiente instruccion y = y + 1 'con este contador sabemos cuantos dias en total (feriados, fines de semana y laborales) sumaremos a la fecha inicial If Weekday(fechai + y, vbMonday) <= semanalab Then 'si la fecha inicial + y es laboral If InStr(cadena, (fechai + y)) = 0 Then 'si la fecha inicial + y no esta en los feriados x = x + 1 'sumar 1 al contador de dias laborales End If End If Loop Until x = dias 'cuando x sea igual a los dias laborales especificados detenerse dialab = fechai + y 'escribimos el resultado End Function
Con éste macro no solo podemos emular las mismas características que la función de Excel 2007 dia.lab, sino que podemos realizar cálculos en base a 6 días laborales en la semana, por ejemplo si nuestra empresa labora los días sábados y necesitamos tomar en cuenta ese día, modificamos la 6ta linea linea colocándole 6 en vez de 5, con esto le decimos que nuestra semana tiene 6 días laborales y no 5
Luego de tener nuestro Macro en su sitio, podemos realizar el Ejemplo del calculo de fechas en base a días laborales sin inconvenientes, solo debemos tener presente cambiar dia.lab por dialab (sin el punto)
No hay comentarios:
Publicar un comentario