none
Excel - Cálculo com intervalo de tempo RRS feed

  • Pergunta

  • Boa tarde a todos.

    Gostava de obter ajuda para o seguinte:

    Tomando como exemplo - Tenho duas colunas com data e hora - 30/08/2018  21:26 e 31/08/2018  11:47

    Preciso de obter outra coluna com o tempo decorrido entre ambas as colunas sem que a contagem inclua o período entre as 22:00 de um dia e as 08:00 do outro.

    Ou seja: O tempo das 21:26 às 22:00 somado do tempo das 08:00 às 11:47.

    O cálculo seria fácil de fosse introduzir apenas esta linha mas tenho muitas mais e necessito incrementar sempre mais linhas/dados.

    Conseguem por favor ajudar?

    Muito obrigado.

    quinta-feira, 6 de setembro de 2018 15:43

Respostas

  • Boa noite.

    Supondo as datas nas células "B2" e "C2":

    =MÁXIMO(0;(INT(B2+1) - 2/24)-B2)   +   MÁXIMO(0;C2- (INT(C2)+8/24))   +   (INT(C2)-INT(B2)-1)* 16/24

    Deve funcionar para qualquer intervalo, inclusive múltiplos dias. Favor testar.


    Filipe Magno

    Ops, esqueci de dois detalhes: quando as duas datas estão no mesmo dia e de desconsiderar a hora inicial e a hora final fora dos limites. Também havia considerado um dia útil de 16 horas, mas na verdade são 14. Acho que agora deve funcionar para todos os casos:

    =MÁXIMO(0;(INT(B2+1) - 2/24)-B2) + SE(HORA(B2)<8; B2-INT(B2)-8/24; 0)   +   MÁXIMO(0;C2- (INT(C2)+8/24)) + SE(HORA(C2)>22; 22/24 - (C2-INT(C2)); 0)   +   (INT(C2)-INT(B2)-1)* 14/24 + 0,00000001

    Obs.: o resíduo somado no final da fórmula é para evitar erros devido à precisão limitada do Excel (poderia ser substituído pela função Truncar ou Arredondar).

    Favor testar e ver se atende todos os casos.


    Filipe Magno

    • Marcado como Resposta Duvida.agora terça-feira, 11 de setembro de 2018 08:20
    terça-feira, 11 de setembro de 2018 00:32
  • Bom dia.

    Realmente tinha um pequeno erro na fórmula: onde está ">22" deveria ser ">=22". Porém, note que pela sua especificação o resultado esperado é "00:00" e não "00:01". Com a correção que estou propondo o resultado será "00:00".

    A fórmula final ficou:

    =MÁXIMO(0;(INT(B2+1) - 2/24)-B2) + SE(HORA(B2)<8; B2-INT(B2)-8/24; 0)   +   MÁXIMO(0;C2- (INT(C2)+8/24)) + SE(HORA(C2)>=22; 22/24 - (C2-INT(C2)); 0)   +   (INT(C2)-INT(B2)-1)* 14/24 + 0,00000001

    Por favor, verifique se atende.


    Filipe Magno

    • Marcado como Resposta Duvida.agora quinta-feira, 31 de janeiro de 2019 12:25
    quarta-feira, 30 de janeiro de 2019 12:47

Todas as Respostas

  • Olá.

    Nesse seu exemplo, qual seria o resultado esperado?

    pelo que entendi bastaria fazer assim: 

    =A1-A2-(10/24)

    Considerando A1 a data mais antiga e que o intervalo entre as datas seja menor que 24 horas


    https://inframicrosoft.wordpress.com/




    • Editado J. Maurício quinta-feira, 6 de setembro de 2018 16:23
    quinta-feira, 6 de setembro de 2018 16:18
  • Olá.

    Nesse seu exemplo, qual seria o resultado esperado?

    pelo que entendi bastaria fazer assim: 

    =A1-A2-(10/24)

    Considerando A1 a data mais antiga e que o intervalo entre as datas seja menor que 24 horas


    https://inframicrosoft.wordpress.com/




    Muito obrigado pela sua resposta (e rápida)!

    Já tinha considerado a fórmula que indica mas o que ela faz não é subtrair o espaço de tempo entre as 22:00 e as 08:00 caso a diferença entre as data/hora seja entre um(uns) dia(s) e outro(s).

    Imagine os dois exemplos:

    31/08/2018  18:10 para 02/09/2018  10:56 devolve 30:46

    02/09/2018  12:31 para 02/09/2018  22:21 dá um resultado impossível

    Nenhum dos resultados devolve o pretendido.

    Actualmente tenho as células formatadas como 37:30:55 em que 31/08 e 02/09 estão na coluna A e 01/09 e 02/09 como coluna B e o resultado na coluna C (actualmente com a fórmula =SE(B-A=0;"";B-A)).

    Muito obrigado pela vossa ajuda.

    sexta-feira, 7 de setembro de 2018 09:51
  • Sim. Eu coloquei essa observação.

    No seu caso, provavelmente vai ter que considerar domingos e feriados também. Então, a regra não é simplesmente ignorar um período de tempo.


    https://inframicrosoft.wordpress.com/


    • Editado J. Maurício sexta-feira, 7 de setembro de 2018 23:10
    sexta-feira, 7 de setembro de 2018 23:10
  • Se as datas só envolverem dias úteis, início e término das tarefas estiverem dentro do intervalo válido (08:00-21:59), você poderia usar:

    =(B1-A1)-((DIAS(B1;A1)*10)/24)


    https://inframicrosoft.wordpress.com/


    sábado, 8 de setembro de 2018 00:12
  • Muito obrigado por tentar ajudar.

    Os exemplos que indica não me conseguem ajudar…

    O cálculo não tem que envolver especificamente dias de semana, fim de semana ou feriados. O cálculo pode ser para todos os dias corridos sem exceção.

    Tem é contar todo o tempo e excluir o período das 22:00 às 08:00 entre um dia e o dia seguinte.

    Tentei colocar uma imagem de exemplo e não consegui, já venho aqui tentar outra vez.

    segunda-feira, 10 de setembro de 2018 12:12
  • Nesse caso, melhor usar uma macro.

    https://inframicrosoft.wordpress.com/

    segunda-feira, 10 de setembro de 2018 12:33
  • Boa noite.

    Supondo as datas nas células "B2" e "C2":

    =MÁXIMO(0;(INT(B2+1) - 2/24)-B2)   +   MÁXIMO(0;C2- (INT(C2)+8/24))   +   (INT(C2)-INT(B2)-1)* 16/24

    Deve funcionar para qualquer intervalo, inclusive múltiplos dias. Favor testar.


    Filipe Magno

    segunda-feira, 10 de setembro de 2018 22:59
  • Boa noite.

    Supondo as datas nas células "B2" e "C2":

    =MÁXIMO(0;(INT(B2+1) - 2/24)-B2)   +   MÁXIMO(0;C2- (INT(C2)+8/24))   +   (INT(C2)-INT(B2)-1)* 16/24

    Deve funcionar para qualquer intervalo, inclusive múltiplos dias. Favor testar.


    Filipe Magno

    Ops, esqueci de dois detalhes: quando as duas datas estão no mesmo dia e de desconsiderar a hora inicial e a hora final fora dos limites. Também havia considerado um dia útil de 16 horas, mas na verdade são 14. Acho que agora deve funcionar para todos os casos:

    =MÁXIMO(0;(INT(B2+1) - 2/24)-B2) + SE(HORA(B2)<8; B2-INT(B2)-8/24; 0)   +   MÁXIMO(0;C2- (INT(C2)+8/24)) + SE(HORA(C2)>22; 22/24 - (C2-INT(C2)); 0)   +   (INT(C2)-INT(B2)-1)* 14/24 + 0,00000001

    Obs.: o resíduo somado no final da fórmula é para evitar erros devido à precisão limitada do Excel (poderia ser substituído pela função Truncar ou Arredondar).

    Favor testar e ver se atende todos os casos.


    Filipe Magno

    • Marcado como Resposta Duvida.agora terça-feira, 11 de setembro de 2018 08:20
    terça-feira, 11 de setembro de 2018 00:32
  • ESPETACULAR!!!!

    O meu Muito, Muito OBRIGADO!!

    Tenho o quadro completo com a sua equação!! Fico-lhe muito agradecido Filipe Magno!!

    Testei com as seguintes colunas e resultados (sempre corretos e de encontro ao que eu precisava):

    04/09/2018 21:36 05/09/2018 19:58 12:22:00
    05/09/2018 10:34 05/09/2018 20:33 9:59:00
    22/08/2018 10:11 24/08/2018 07:55 25:49:00
    20/08/2018 15:30 20/08/2018 16:01 0:31:00
    10/08/2018 09:29 12/08/2018 18:17 36:48:00

    Não posso deixar de agradecer igualmente e uma vez mais ao J. Maurício por igualmente tentar ajudar.

    BEM HAJAM!!

    terça-feira, 11 de setembro de 2018 08:20
  • Boa noite.

    Supondo as datas nas células "B2" e "C2":

    =MÁXIMO(0;(INT(B2+1) - 2/24)-B2)   +   MÁXIMO(0;C2- (INT(C2)+8/24))   +   (INT(C2)-INT(B2)-1)* 16/24

    Deve funcionar para qualquer intervalo, inclusive múltiplos dias. Favor testar.


    Filipe Magno

    Ops, esqueci de dois detalhes: quando as duas datas estão no mesmo dia e de desconsiderar a hora inicial e a hora final fora dos limites. Também havia considerado um dia útil de 16 horas, mas na verdade são 14. Acho que agora deve funcionar para todos os casos:

    =MÁXIMO(0;(INT(B2+1) - 2/24)-B2) + SE(HORA(B2)<8; B2-INT(B2)-8/24; 0)   +   MÁXIMO(0;C2- (INT(C2)+8/24)) + SE(HORA(C2)>22; 22/24 - (C2-INT(C2)); 0)   +   (INT(C2)-INT(B2)-1)* 14/24 + 0,00000001

    Obs.: o resíduo somado no final da fórmula é para evitar erros devido à precisão limitada do Excel (poderia ser substituído pela função Truncar ou Arredondar).

    Favor testar e ver se atende todos os casos.


    Filipe Magno

    Filipe Magno,

    Desculpe, outra vez mas venho tentar novamente a sua ajuda e a do Forum.

    Aconteceu agora no cálculo o seguinte:

    29/1/19 22:10 29/1/19 22:11 0:11:00

    Ou seja, o resultado devolveu 11 minutos e não 01 como o é na verdade.

    Consegue/em por favor verificar?

    Obrigado.

    quarta-feira, 30 de janeiro de 2019 11:17
  • Bom dia.

    Realmente tinha um pequeno erro na fórmula: onde está ">22" deveria ser ">=22". Porém, note que pela sua especificação o resultado esperado é "00:00" e não "00:01". Com a correção que estou propondo o resultado será "00:00".

    A fórmula final ficou:

    =MÁXIMO(0;(INT(B2+1) - 2/24)-B2) + SE(HORA(B2)<8; B2-INT(B2)-8/24; 0)   +   MÁXIMO(0;C2- (INT(C2)+8/24)) + SE(HORA(C2)>=22; 22/24 - (C2-INT(C2)); 0)   +   (INT(C2)-INT(B2)-1)* 14/24 + 0,00000001

    Por favor, verifique se atende.


    Filipe Magno

    • Marcado como Resposta Duvida.agora quinta-feira, 31 de janeiro de 2019 12:25
    quarta-feira, 30 de janeiro de 2019 12:47
  • Tem toda a razão Filipe Magno.

    O >= era o suficiente e tem também razão no resultado 00:00 uma vez que está fora do período de tempo a contabilizar.

    Estou-lhe muito grato, bem haja!!


    quinta-feira, 31 de janeiro de 2019 12:24