Verificando si es feriado en la fecha especificada usando VBA en Microsoft Excel

Anonim

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

Los datos brutos de esta muestra consisten en fechas en secuencia en la columna A. Encontraremos si es feriado en la fecha indicada, incluida o excluida la semana libre el sábado o el domingo.

Hemos especificado las fechas de las 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 un día hábil.

= IsHoliday (A9, FALSE)

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 "Días festivos" como salida. Si la fecha no existe en la lista de días festivos, verifique si la fecha indicada es un sábado o un 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 días festivos.

Si no RngFind no es nada, entonces

OK = "Vacaciones"

Ir al último

Terminara 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 a continuación para obtener el código

 Opción Función explícita IsHoliday (LngDate como fecha, Opcional InclSaturdays como booleano = Verdadero, _ Opcional InclSundays como booleano = Verdadero) 'Declarando variables Dim RngFind As Range Dim OK As String' Inicializando la variable OK = "Working day" On Error Resume Next ' Encontrar la ubicación donde existe la fecha especificada en la hoja de días festivos Establecer RngFind = Hojas de trabajo ("Días festivos"). Columnas (1) .Find (LngDate) On Error GoTo 0 'Verificando si es festivo en la fecha indicada Si no, RngFind no es nada Entonces OK = "Feriado" Ir al último final If 'Verificando si es sábado en la fecha dada Si InclSaturdays Luego si Weekday (LngDate, 2) = 6 Entonces OK = "Feriado" Ir al último final If End If' Verificando si es domingo en fecha dada Si incluye domingos Entonces si día de la semana (LngDate, 2) = 7 Entonces OK = "Día festivo" Finaliza Si termina Si es último: IsHoliday = OK Finalizar función 

Si te gustó este blog, compártelo con tus amigos en Facebook. Además, puede seguirnos en Twitter y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos al sitio de correo electrónico