25 septiembre, 2023

GENERAR N FECHAS DE DÍAS LABORABLES SEGÚN INDIQUEMOS EN LA FÓRMULA

Hola a todos!.

Esta semana he tenido varias consultas y una de ellas se refería a algo de lo que tengo bastante desarrollado en esta web y que es la generación de fechas a través de varios lenguajes y fórmulas. Tuve dudas de publicar este post, sobre todo porque lleva ya varios sobre el tema y podría llegar a aburrir, pero como se trata de una consulta y de algo que específicamente no se resuelve con las publicaciones anteriores, he decidido publicar 🙂

En el post de hoy lo voy a resolver la consulta con VBA:

«Necesito una fórmula que al poner una fecha, me saque 5 días hábiles después de esa fecha, sin sábado ni domingo».

La función que he desarrollado es en VBA. Se podría generar en otros lenguajes, pero como la consulta se refiere a Excel lo haré así:

Function DIAS_LAB(ByVal inicio As Date, num As Long)
    'Declaramos variables
    Dim nCont       As Date
    Dim sCadena     As String, fsem As String
    Dim matriz      As Variant, j As Double
    Dim miArray     As Variant
    With ActiveSheet
        n = 1
        Do While n <= num
            nCont = DateAdd("w", 1, inicio)
            inicio = nCont
            fsem = Format(inicio, "ddd")
            If fsem <> "sá." And fsem <> "do." Then
                sCadena = Trim(sCadena & " " & inicio)
                n = n + 1
            End If
            If n > num Then Exit Do
        Loop
        'pasamos la información de la matriz a la hoja
        matriz = Split(sCadena, " ")
        ReDim miArray(0 To UBound(matriz))
        For j = 0 To UBound(matriz)
            miArray(j) = Format(matriz(j), "dd/mm/yyyy")
        Next j
        DIAS_LAB = Application.Transpose(miArray)
    End With
End Function

La función evalúa todas las fechas validando y sumando los días laborables. En el momento de llegar al número indicado salimos del loop y pasamos el resultado de la función a la hoja.

Y este sería el resultado:

En el ejemplo he vinculado los argumentos de la fórmula a las celdas, pero se pueden indicar los valores en la propia función.

Como podéis observar la UDF funciona perfectamente y si estamos trabajando 365 el resultado se derramará directamente en las celdas adjuntas sin necesidad de seleccionar y aplicar matricialmente.

Espero que os sea de utilidad. No voy a dejar archivo porque no hay datos que descargar y el código ya os lo he dejado aquí.

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies