Banner clix

viernes, 16 de agosto de 2013

Macro: Obtener cantidad de dias laborales entre dos fechas en Excel 2003

Aqui tenemos el macro que realiza la misma función que "dias.lab" en Excel 2007 para ser ejecutado en Excel 2003 o para realizar cálculos en base a 6 días laborales si no tenemos Excel 2010. Con este macro se puede seguir el ejemplo anterior de la misma manera solo sustituyendo dias.lab por diaslab (sin punto).

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.

Copiamos todo el siguiente macro en un módulo de Excel y listo.



Function diaslab(fechai As Date, fechaf As Date, 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
If Weekday(fechai, vbMonday) <= semanalab Then 'si la fecha inicial + y es laboral
        If InStr(cadena, fechai) = 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
fechai = CDate(fechai + 1) 'sumamos 1 dia cada vez hasta llegar a fecha final
Loop Until CDate(fechai) > CDate(fechaf) 'cuando fechai sea mayor que fechaf detener

diaslab = x 'escribimos el resultado
End Function
Si queremos calcular en base a 6 dias laborales por semana, le sustituimos en la sexta linea el número 5 por el número 6 y ya podemos realizar lo que necesitamos.

No hay comentarios:

Publicar un comentario