Neste artigo, criaremos uma Função Definida pelo Usuário (UDF) para verificar se é feriado na data especificada, incluindo ou excluindo sábados e domingos como folgas semanais.
Os dados brutos para esta amostra consistem em datas em sequência na coluna A. Descobriremos se é feriado na data fornecida, incluindo ou excluindo a semana de folga no sábado ou domingo.
Especificamos as datas dos feriados na coluna A da planilha “Feriados”.
Criamos a função personalizada “IsHoliday” para encontrar o status do feriado em uma determinada data.
Sintaxe de função
IsHoliday (data, incluindo sábados, incluindo domingos)
InclSaturdays e InclSundays são parâmetros opcionais. Por padrão, ambos têm valor TRUE. Para transformar sábado e domingo em dias úteis, altere o valor do respectivo parâmetro para FALSE.
Usamos a fórmula abaixo na célula C9 para encontrar o status de feriado para a data na célula A9, considerando sábado como um dia útil.
= IsHoliday (A9, FALSE)
Usamos a fórmula abaixo na célula D9 para encontrar o status de feriado para a data na célula A9, considerando sábados e domingos como dias úteis.
= IsHoliday (A9, FALSE, FALSE)
Usamos a fórmula abaixo na célula E9 para encontrar o status de feriado para a data na célula A9, considerando sábados e domingos como dias de folga.
= IsHoliday (A9)
Explicação lógica
Na função “IsHoliday”, em primeiro lugar verificamos se determinada data no parâmetro existe na lista de feriados especificada. Se houver data na lista de feriados, retorne “Feriado” como saída. Se a data não existir na lista de feriados, verifique se a data fornecida é um sábado ou um domingo. Com base no parâmetro de entrada fornecido, verifique se deseja incluir ou excluir um sábado ou domingo como feriados.
Explicação do código
Defina RngFind = Worksheets ("Holidays"). Columns (1) .Find (LngDate)
O código acima é usado para encontrar o local onde a data especificada existe na lista de feriados.
If Not RngFind Is Nothing Then
OK = "Férias"
GoTo Last
Fim se
O código acima é usado para verificar se a data especificada existe na lista de feriados. Se a condição retornar TRUE, a função personalizada retornará “Holiday” como saída e o controle mudará para a última linha do UDF.
Siga abaixo para o código
Opção Explicit Função IsHoliday (LngDate As Date, Opcional InclSaturdays As Boolean = True, _ Optional InclSundays As Boolean = True) 'Declarando variáveis Dim RngFind As Range Dim OK As String' Inicializando a variável OK = "Dia útil" On Error Resume Next ' Encontrar o local onde a data especificada existe na folha de feriados Definir RngFind = Worksheets ("Holidays"). Colunas (1) .Find (LngDate) On Error GoTo 0 'Verificar se é feriado na data dada If Not RngFind Is Nothing Then OK = "Feriado" GoTo Last End If 'Verificando se é sábado em determinada data If InclSaturdays Then If Weekday (LngDate, 2) = 6 Then OK = "Feriado" GoTo Last End If End If' Verificando se é domingo em determinada data If InclSundays Then If Weekday (LngDate, 2) = 7 Then OK = "Feriado" End If End If Last: IsHoliday = OK End Function
Se você gostou deste blog, compartilhe com seus amigos no Facebook. Além disso, você pode nos seguir no Twitter e no Facebook.
Gostaríamos muito de ouvir de você, diga-nos como podemos melhorar nosso trabalho e torná-lo melhor para você. Escreva para nós no site de e-mail