Code Library

M · UDF

fnFeriados

Tabela com os feriados nacionais e os pontos facultativos federais do Brasil no ano informado.

Categoria: Data e horaTipo: UDFVersão: v2.0Fonte: Laennder Alves, adaptado por Paulo André JesusAtualizado em: 25/09/2026
Documentação completa na Function Library →

Sintaxe

fnFeriados(y as number) as table

Argumentos

NomeTipoObrigatórioDescrição
ynumberSimAno.

Retorno

table [Data = date, Feriado = text, Tipo = text]

Código completo

let
    fnFeriados = (y as number) as table =>
        let
            // Domingo de Páscoa (gregoriano)
            a = Number.Mod(y, 19),
            b = Number.IntegerDivide(y, 100),
            c = Number.Mod(y, 100),
            d = Number.IntegerDivide(b, 4),
            e = Number.Mod(b, 4),
            f = Number.IntegerDivide(b + 8, 25),
            g = Number.IntegerDivide(b - f + 1, 3),
            h = Number.Mod(19 * a + b - d - g + 15, 30),
            i = Number.IntegerDivide(c, 4),
            k = Number.Mod(c, 4),
            l = Number.Mod(32 + 2 * e + 2 * i - h - k, 7),
            m = Number.IntegerDivide(a + 11 * h + 22 * l, 451),
            vPascoa = #date(y, Number.IntegerDivide(h + l - 7 * m + 114, 31), Number.Mod(h + l - 7 * m + 114, 31) + 1),

            vFixos = {
                {#date(y, 1, 1), "Confraternização Universal", "Feriado nacional"},
                {#date(y, 4, 21), "Tiradentes", "Feriado nacional"},
                {#date(y, 5, 1), "Dia do Trabalho", "Feriado nacional"},
                {#date(y, 9, 7), "Independência do Brasil", "Feriado nacional"},
                {#date(y, 10, 12), "Nossa Senhora Aparecida", "Feriado nacional"},
                {#date(y, 11, 2), "Finados", "Feriado nacional"},
                {#date(y, 11, 15), "Proclamação da República", "Feriado nacional"},
                {#date(y, 12, 25), "Natal", "Feriado nacional"}
            }
            & (if y >= 2024 then {{#date(y, 11, 20), "Dia Nacional de Zumbi e da Consciência Negra", "Feriado nacional"}} else {}),

            vMoveis = {
                {Date.AddDays(vPascoa, -48), "Carnaval (segunda-feira)", "Ponto facultativo"},
                {Date.AddDays(vPascoa, -47), "Carnaval (terça-feira)", "Ponto facultativo"},
                {Date.AddDays(vPascoa, -2), "Paixão de Cristo", "Feriado nacional"},
                {vPascoa, "Páscoa", "Data comemorativa"},
                {Date.AddDays(vPascoa, 60), "Corpus Christi", "Ponto facultativo"}
            },

            vTabela = #table(type table [Data = date, Feriado = text, Tipo = text], vFixos & vMoveis)
        in
            Table.Sort(vTabela, {{"Data", Order.Ascending}}),

    Documentacao = [
        Documentation.Name = "fnFeriados",
        Documentation.Description = "Feriados nacionais e pontos facultativos federais do ano informado.",
        Documentation.LongDescription = "Colunas Data, Feriado e Tipo (Feriado nacional, Ponto facultativo ou Data comemorativa). Móveis calculados a partir da Páscoa. Consciência Negra incluída a partir de 2024.",
        Documentation.Category = "Data e hora",
        Documentation.Author = "Laennder Alves, adaptado por Paulo André Jesus",
        Documentation.Version = "2.0",
        Documentation.Examples = {
            [Description = "Feriados de 2026", Code = "fnFeriados(2026)", Result = "Tabela com 14 linhas; Paixão de Cristo em 03/04/2026 e Corpus Christi em 04/06/2026"]
        }
    ]
in
    Value.ReplaceType(fnFeriados, Value.ReplaceMetadata(Value.Type(fnFeriados), Documentacao))

Exemplos

fnFeriados(2026)
// 14 linhas; Paixão de Cristo em 03/04/2026 e Corpus Christi em 04/06/2026

Table.Combine(List.Transform({2024 .. 2030}, fnFeriados))
// vários anos numa tabela

Dicas e observações

💡 A coluna Tipo separa Feriado nacional, Ponto facultativo (Carnaval, Corpus Christi) e Data comemorativa (Páscoa). Filtre Tipo = "Feriado nacional" para calcular dias úteis. 💡 20 de novembro (Consciência Negra) entra a partir de 2024 (Lei 14.759/2023). 💡 Páscoa pelo algoritmo gregoriano anônimo (Meeus/Jones/Butcher).