Foto de Isabella P.
Isabella há 5 anos
Enviada pelo
Site

Horas de parada para cada turno dentro de um intervalo

Tenho uma planilha onde são lançados os tempos de parada inicio e fim com data e hora na celula, exemplo de um apontamento: tenho em uma coluna um apontamento 06/09/19 17:00 e na coluna do lado o fechamento desse apontamento com a data e a hora que resolveu (mesma linha) 09/09/19 04:00. Trabalho em turno, turno A de 6-15 turno B 15-22:52 e turno C 22:52- 6 .. quero calcular dentro desse periodo de parada ai, quantas horas foram em cada turno. como faço ?
Professor Leandro S.
Respondeu há 5 anos
Contatar Leandro

Infelizmente não conheço nenhuma fórmula do Excel que faça exatamente isso ou uma simples intersecção de intervalos de tempo, então temos que fazer uma fórmula ligeiramente extensa mesmo.

No final da resposta eu vou dar a fórmula completa, mas só para que você entenda o raciocínio, vou explicar em detalhes como pensei:

Seja o turno diário o intervalo [a,b] em horas e a duração do apontamento o intervalo [x,y]. A ideia é contar, separadamente, as horas trabalhadas no primeiro dia, nos dias completos e no último dia, para cada turno.

  • PRIMEIRO DIA

Podemos enxergar três casos, em que o início do apontamento começa antes de um turno, no meio ou após.

     x --- ----- --- y     Total de horas  
Caso I  a --- ----- ----- ----- ----- ---> y - x a < x < y
Caso II     a --- ----- ----- ---> y - a x < a < y
Caso III         a --- ---> y - y = 0 x < y < a
              y - med(a,x,y)  

Vemos que é sempre y menos o valor do meio entre a,x e y.

  • DIAS INTERMEDIÁRIOS

Esses dias são completos, desde 0h até 24h, então sendo N o número de dias completos, as horas trabalhadas serão N*(y-x).

  • ÚLTIMO DIA

Podemos enxergar também três casos, em que o fim do apontamento termina antes de um turno, no meio ou após.

       x --- ----- --- y   Total de horas  
Caso I ----- --- b         x - x = 0 b < x < y
Caso II ----- ----- ----- --- b     b - x x < b < y
Caso III ----- ----- ----- ----- ----- --- b y - x  x < y < b
              med(b,x,y) - x  

Vemos que é sempre o valor do meio entre b,x e y menos o x.

No fim teremos algo assim:

y - med(a,x,y) + N*(y-x) + med(b,x,y) - x

  • FÓRMULAS EXCEL

Agora basta somar essas três parcelas e substituir os valors de x, y, a e b para os valores reais.

Para representar um valor em horas, minutos e segundos, usaremos a função TEMPO([horas]; [minutos]; [segundos]) (TIME em inglês). Portanto, usando o turno B como exemplo:

x   TEMPO(15;0;0)
y   TEMPO(22;52;0)

Para obter o tempo da data de começo e fim, usaremos as funções HORA, MINUTO, SEGUNDO (HOUR, MINUTE, SECOND em inglês) para preencher os argumentos da função TEMPO. Estando a data de começo e fim de um apontamento nas células A2 e B2 respectivamente:

a   TEMPO(HORA(A2); MINUTO(A2); SEGUNDO(A2))
b   TEMPO(HORA(B2); MINUTO(B2); SEGUNDO(B2))

Para a mediana temos a função MED (MEDIAN em inglês).

E finalmente para o cálculo de dias completos, usamos a função DIAS([começo], [fim]) (DAYS em inglês), mas como ele conta o último dia, vamos subtrair de 1.

Para o turno A, por exemplo teremos:

  A B C
1 COMEÇO FIM Horas trabalhadas (turno A)
2 10/11/2019 5:00:00 15/10/2019 12:30:00

=TEMPO(15;0;0)-MED(TEMPO(HORA($A2);MINUTO($A2);SEGUNDO($A2));TEMPO(6;0;0);TEMPO(15;0;0))

+(DIAS($B2;$A2)-1)*(TEMPO(15;0;0)-TEMPO(6;0;0))

+MED(TEMPO(HORA($B2);MINUTO($B2);SEGUNDO($B2));TEMPO(6;0;0);TEMPO(15;0;0))-TEMPO(6;0;0)

Caso o apontamento tenha começado e terminado no mesmo dia, a função continuará válida pois o tempo a mais contado no primeiro e último dias serão descontados no valor negativo que resultará na conta dos dias intermediários. Essa fórmula também funciona para o turno B.

Já para o turno C temos uma pequena complicação na qual o turno é dividido no dia (de manhã até as 6h e à partir das 22h52 à noite). Nesse caso não temos opção senão considerar como dois turnos diferentes (um começando às 0h00 até 6h e outro das 22h52 ate 24h00) e somá-los. Como TEMPO(24;0;0) é considerado como 0:00:00, tive que mudar a função de mediana para a função de MAX. Aproveitei também para trocar a outra mediana pela função MIN apenas para retirar o valor TEMPO(0;0;0) da fórmula que já era grande.

No final temos, para os três turnos:

  A B C
1 COMEÇO FIM Turno A
2 10/11/2019 5:00:00 15/10/2019 12:30:00

=TEMPO(15;0;0)-MED(TEMPO(HORA($A2);MINUTO($A2);SEGUNDO($A2));TEMPO(6;0;0);TEMPO(15;0;0))

+(DIAS($B2;$A2)-1)*(TEMPO(15;0;0)-TEMPO(6;0;0))

+MED(TEMPO(HORA($B2);MINUTO($B2);SEGUNDO($B2));TEMPO(6;0;0);TEMPO(15;0;0))-TEMPO(6;0;0)

3 COMEÇO FIM Turno B
4 10/11/2019 5:00:00 15/10/2019 12:30:00

=TEMPO(15;0;0)-MED(TEMPO(HORA($A4);MINUTO($A4);SEGUNDO($A4));TEMPO(15;0;0);TEMPO(22;52;0))

+(DIAS($B4;$A4)-1)*(TEMPO(15;0;0)-TEMPO(22;52;0))

+MED(TEMPO(HORA($B4);MINUTO($B4);SEGUNDO($B4));TEMPO(15;0;0);TEMPO(22;52;0))-TEMPO(6;0;0)

5 COMEÇO FIM Turno C
6 10/11/2019 5:00:00 15/10/2019 12:30:00

TEMPO(6;0;0)-MIN(TEMPO(HORA($A6);MINUTO($A6);SEGUNDO($A6));TEMPO(6;0;0))

+(DIAS($B6;$A6)-1)*(TEMPO(6;0;0))

+MIN(TEMPO(HORA($B6);MINUTO($B6);SEGUNDO($B6));TEMPO(6;0;0))

+TEMPO(24;0;0)-MAX(TEMPO(HORA($A6);MINUTO($A6);SEGUNDO($A6));TEMPO(22;52;0))

+(DIAS($B6;$A6)-1)*(TEMPO(24;0;0)-TEMPO(22;52;0))

+MAX(TEMPO(HORA($B6);MINUTO($B6);SEGUNDO($B6));TEMPO(22;52;0))-TEMPO(22;52;0)

Aí seria só você mudar as referências para as células certas na sua tabela.

(Se você souber programar em VBA eu recomendaria criar uma função para isso, já que na fórmula que criei tem muitas repetições e ficou relativamente longa, mas ainda é válida.)

Espero ter ajudado.

























Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Envie uma dúvida grátis
Resposta na hora da Minerva IA e de professores particulares
Enviar dúvida
Minerva IA
do Profes
Respostas na hora
100% no WhatsApp
Envie suas dúvidas pelo App. Baixe agora
Precisa de outra solução? Conheça
Aulas particulares Encontre um professor para combinar e agendar aulas particulares Buscar professor