Comprobando si se trata de vacaciones en la fecha especificada utilizando VBA en Microsoft Excel
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.
Hemos especificado las fechas de vacaciones en la columna A de la hoja «Vacaciones».
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.
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]