En este artículo, crearemos una función definida por el usuario (UDF) para verificar si es festivo en la fecha especificada, incluidos o excluidos los sábados y domingos como días libres.

Los datos brutos para esta muestra consisten en fechas en secuencia en la columna A. Encontraremos si es feriado en la fecha dada, incluyendo o excluyendo la semana libre el sábado o domingo.

ArrowRawData

Hemos especificado las fechas de vacaciones en la columna A de la hoja «Vacaciones».

ArrowHolidayList

Hemos creado la función personalizada «IsHoliday» para encontrar el estado de las vacaciones en la fecha indicada.

Sintaxis de la función

IsHoliday (Fecha, Incluidos Sábados, Incluidos Domingos)

InclSaturdays e InclSundays son parámetros opcionales. De forma predeterminada, ambos tienen el valor VERDADERO. Para convertir el sábado y el domingo en días laborables, cambie el valor del parámetro respectivo a FALSO.

ArrowOutput

Hemos utilizado la siguiente fórmula en la celda C9 para encontrar el estado de vacaciones para la fecha en la celda A9 considerando el sábado como día hábil.

Es vacaciones (A9, FALSO)

Hemos utilizado la siguiente fórmula en la celda D9 para encontrar el estado de vacaciones para la fecha en la celda A9 considerando los sábados y domingos como días hábiles.

IsHoliday (A9, FALSE, FALSE)

Hemos utilizado la siguiente fórmula en la celda E9 para encontrar el estado de vacaciones para la fecha en la celda A9 considerando los sábados y domingos como días libres.

Es vacaciones (A9)

Explicación lógica

En la función «IsHoliday», primero verificamos si la fecha dada en el parámetro existe en la lista de vacaciones especificada. Si la fecha existe en la lista de días festivos, devuelva «Vacaciones» como salida. Si la fecha no existe en la lista de días festivos, compruebe si la fecha indicada es sábado o domingo. Según el parámetro de entrada proporcionado, compruebe si desea incluir o excluir un sábado o un domingo como festivos.

Explicación del código

Establecer RngFind = Hojas de trabajo («Días festivos»). Columnas (1) .Find (LngDate)

El código anterior se usa para encontrar la ubicación donde existe la fecha especificada en la lista de vacaciones.

Si no, RngFind no es nada, entonces OK = «Vacaciones»

Ir al último final si el código anterior se usa para verificar si la fecha especificada existe en la lista de días festivos. Si la condición devuelve VERDADERO, la función personalizada devuelve «Vacaciones» como salida y el control se desplaza a la última línea de la UDF.

Siga el código a continuación

Option Explicit

Function IsHoliday(LngDate As Date, Optional InclSaturdays As Boolean = True, _

Optional InclSundays As Boolean = True)

'Declaring variables

Dim RngFind As Range

Dim OK As String

'Initializing the variable

OK = "Working day"

On Error Resume Next

'Finding the location where the specified date exist in the Holidays sheet

Set RngFind = Worksheets("Holidays").Columns(1).Find(LngDate)

On Error GoTo 0

'Checking whether it is holiday on the given date

If Not RngFind Is Nothing Then

OK = "Holiday"

GoTo Last

End If

'Checking whether it is Saturday on given date

If InclSaturdays Then

If Weekday(LngDate, 2) = 6 Then

OK = "Holiday"

GoTo Last

End If

End If

'Checking whether it is Sunday on given date

If InclSundays Then

If Weekday(LngDate, 2) = 7 Then

OK = "Holiday"

End If

End If

Last:

IsHoliday = OK

End Function

Si te gustó este blog, compártelo con tus amigos en Facebook y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]