locked
Verificar se é dia útil

    Pergunta

  • Caros colegas, bom dia!

     

    Existe algum método para determinar se determinada data é dia útil?

    O que eu estou preceisando fazer é o seguinte: uma operação vence todo dia 15 ou o dia útil subsequente e eu gostaria de automatizar esse evento, ou seja, se o dia 15 de determinado mês cair em sábado, domingo ou feriado mostrar o próximo dia útil.

    OBS: com relação aos finais de semana tudo bem, o problema é com os feriados.

    terça-feira, 15 de abril de 2008 12:45

Todas as Respostas

  • Antes de mais nada, vc precisa criar uma lista de feriados em algum lugar do seu arquivo.

    A maioria dos feriados cai em dias fixos e só é necessário trocar o ano. O que dá mais trabalho são os feriados móveis

    A sexta feira santa pode ser calculada com base na fórmula abaixo, sendo que A1 contém o ano no qual deseja-se calcular.

    =DATA($A$1;SE(MOD(2*MOD($A$1;4)+4*MOD($A$1;7)+6*MOD(19*MOD($A$1;19)+24;30)+5;7)+MOD(19*MOD($A$1;19)+24;30)>9;4;3);SE(MOD(2*MOD($A$1;4)+4*MOD($A$1;7)+6*MOD(19*MOD($A$1;19)+24;30)+5;7)+MOD(19*MOD($A$1;19)+24;30)>9;MOD(2*MOD($A$1;4)+4*MOD($A$1;7)+6*MOD(19*MOD($A$1;19)+24;30)+5;7)+MOD(19*MOD($A$1;19)+24;30)-9;MOD(2*MOD($A$1;4)+4*MOD($A$1;7)+6*MOD(19*MOD($A$1;19)+24;30)+5;7)+MOD(19*MOD($A$1;19)+24;30)+22))-2

    A 3ª feira de carnaval é calculada substraindo-se 45 do valor calculado acima

    O Corpus Christ é obtido acrescentado-se 62 ao valor calculado para a 6ª feira-santa.

    Como alguns feriados são particulares dos municípios (emancipação, padroeira/o, etc) vc vai precisar inserí-los manualmente.

    Depois de montar a tabela como todos os feriados, digamos pelos próximos 5 anos, vc deve utilizar a função DIATRABALHOTOTAL() para calcular o dia útil seguinte a um determinado nº de dias úteis.

    Referências sobre a função no help no Excel ou através do link: http://office.microsoft.com/pt-br/excel/HP100622921046.aspx

    Se vc quiser saber simplesmente se uma determinada data é dia útil use a fórmula: =SE(OU(ÉERROS(PROCV(Data;TabelaFeriados;1;FALSO));DIA(Data)<>1;DIA(Data)<>7);"útil";"feriado")

    Onde Data é o dia pesquisado e TabelaFeriados é a tabela construída com todos os feriados citados acima.

    [ ]s

     

    terça-feira, 15 de abril de 2008 13:31
  • A fórmula DIATRABALHOTOTAL retorna a quantidade de dias úteis entre duas datas. O que eu estou precisando é o seguinte:

     

    Vencimento Operação           Data Pagamento

    15/05/2008                           15/05/2008

    15/06/2008                           16/06/2008

     

    No primeiro caso, o vencimento da operação cai em um dia útil, então o pagamento é no próprio dia. No segundo caso (meu problema), o vencimento da operação cai em um domingo e eu preciso que apareça o próximo dia útil, no caso 16/06/2008. O mesmo se aplica se houver um feriado no meio do caminho.

    terça-feira, 15 de abril de 2008 13:50
  • Pelo que entendi há um espaçamento de 30 dias entre datas e se esta cais num feriado ou final de semana deve ser usado o dia útil seguinte. Confirma?

    Postei a função errada. O correto seria DIATRABALHO(DataRef+30; 1; ListaFeriados), acrescentando 30 dias à data de referência (DataRef) e em seguida buscando o próximo dia útil.

    [ ]s

     

    terça-feira, 15 de abril de 2008 15:45
  • É simples:

    Crie uma matriz com as datas de feriado;

    A fórmula é a seguinte:

    =DIATRABALHO(D20-1;1;Feriado)

    Onde:

    D20      => É a data do vencimento (que poderá coincidir com Sábado, Domingo ou Feirado);
    Feriado => É o nome da matriz com as datas dos feriados.

    Prontinho!
    sábado, 12 de setembro de 2009 17:42
  • Olá pessoal, estou com a mesma dificuldade.

    Tenho uma lista com diversos campos e preciso mostrar o aniversariante sempre nos dias úteis.
    Meus principais campos são: NOME, DATA DO EVENTO, FERIADO(checkbox/sim-não).

    Minha dificuldade é que não estou conseguindo mostrar o aniversáriante que faz aniversário no final de semana(sábado/domingo) na segunda-feira.
    Também preciso visualizar os aniversariantes que fazem aniversário no último feriado.

    Por exemplo: o feriado é sexta, visualizar na segunda-feira. Quinta, visualizar na sexta.

    Alguém poderia me ajudar? Estou tentando algumas fórmulas que postaram mais sem sucesso...

    Abraços.

    quinta-feira, 25 de novembro de 2010 13:41
  • Nessas horas o negócio é simplificar.

     

    Crie uma tabela de feriados que atende a sua cidade/localidade. Nessa tabela, coloque duas colunas.

     

    Feriado ..... Próximo dia útil

    25/12/2010 .....27/12/2010

     

    Coloque 365 linhas nessa tabela, sendo que quando não for feriado, coloque na coluna de "próximo dia útil" a mesma data. Se for feriado, coloque o próximo dia útil.

     

    Em seguida, é só colocar procv( a1 ; tabela ; 2)  para obter o próximo dia útil.

     

    Se você fizer fórmulas vai ter que prever as seguintes situações 

    1. o dia ser útil
    2. o dia cair num sábado/doming e a segunda-feira seguinte ser um feriado
    3. o dia cair num feriado numa sexta e a segunda feira ser útil
    4. o dia cair num feriado numa sexta e a segunda feira ser feriado também (raro mas acontece)
    5. o dia car num sábado/domingo e  a segunda feira ser útil
    Portanto, é um monte de SE()'s inclusive multiplicados entre si. A data original quando for ajusta precisa de novo ajuste.

    COm a tabela fica tudo mais fácil.

     


    João Eurico Consultor Manguetown - Brazil
    quinta-feira, 25 de novembro de 2010 16:37