Calculo de Horas Úteis com Google Sheets - mais difícil do que parece. 🤯

Calculo de Horas Úteis com Google Sheets - mais difícil do que parece. 🤯

Fórmula para copiar no final do artigo

Se você já precisou fazer alguma operações com data e hora, já deve ter se deparado com algumas dificuldades na hora de extrair a informação correta. Recebi esse desafio de um amigo que teve essa dificuldade e não soube como resolver e então decide compartilhar caso possa ajudar alguém... 🤗

Descrevendo o problema

O setor trata de reclamações e denúncias internas na empresa e precisa monitorar e registrar o tempo de resolução das reclamações/denúncias, porém com a ressalva, as horas precisam ser úteis.

Não sendo por isso o nosso calculo seria mais simples bastando subtrair a hora final menos a hora inicial. Pra nossa sorte o Google Sheets conta com um formula que pode auxiliar a tirar o dias não úteis.

A base de dados segue o seguinte esquema que preenchido diretamente na planilha (o que não é o mais recomendado se a ideia é manter o registro).

Não foi fornecido texto alternativo para esta imagem

Visão geral da base: existem dois tipos de manifestações e ambas possuem dois status - "Em Aberto", "Concluída" - para encontrar a diferença entre dias úteis, basta aplicar função do próprio Google Sheets:

=DIATRABALHOTOTAL(data_de_inicio; data_de_termino; [feriados])

O resultado esperado é um número inteiro de dias, se quisermos converter em horas úteis só precisamos multiplicar pelo valor de horas que a jornada de trabalho dura. Nesse caso o departamento só funciona 8 horas por dia, por boa prática, recomendo informar a máquina qual o tipo de dado você está utilizando, então antes de multiplica utilize a função:

=TEMPO(horas, minutos, segundos)

Nesse ponto vamos deparar com mais um problema: as manifestações que são abertas e finalizadas na mesma data recebem "1" como resultante da função =DIATRABALHOTOTAL(), que é multiplicado por "8" totalizando em 8 horas como tempo de resolução, o que pode acabar penalizando setores que estão respondendo abaixo desse tempo.

Não foi fornecido texto alternativo para esta imagem
"Então, por quê não unir a coluna data e hora, calcular a diferença de dias úteis e colocar no formato de duração?" - Pensei
Não foi fornecido texto alternativo para esta imagem
=DIATRABALHOTOTAL(data_de_inicio; data_de_termino) no formato de duração

Após alguns (muitos) testes, a solução mais fácil que consegui idealizar para essa solução foi através do teste das datas, validando se são iguais e calculando a diferença entre horas para os casos positivos e para os casos negativos fiz o calculo do total de dias úteis entre duas datas multiplicados pelo total de horas de jornada de trabalho, menos a diferença entre as horas.

Solução

Não foi fornecido texto alternativo para esta imagem

Nessa solução a função que foi criada poderia receber 4 parâmetros, sendo que as horas poderiam estar em branco e a manifestação concluída ou em andamento com a hora inicial preenchida e a hora final em aberto.

Com a data ela pode receber a hora inicial sem a final e as duas, sem ambas a função acima considera que não há manifestação e o valor devolvido será uma célula em branco. Ou seja a função está apta a lidar com esse diferentes padrões de entrada de dados:

Não foi fornecido texto alternativo para esta imagem
Intervalos de teste

Para copiar:

=SEERRO(IFS(E(NÃO(ISDATE(H43));ÉCÉL.VAZIA(I43);NÃO(ISDATE(J43));ÉCÉL.VAZIA(K43));"";E(ISDATE(H43);NÃO(ISDATE(J43))); DIATRABALHOTOTAL((H43+I43);HOJE())*TEMPO(8;0;0);E(ISDATE(H43);ISDATE(J43);NÃO(H43=J43);ÉCÉL.VAZIA(I43);ÉCÉL.VAZIA(K43));DIATRABALHOTOTAL((H43);(J43))*TEMPO(8;0;0);E(ISDATE(H43);ISDATE(J43);NÃO(H43=J43));(DIATRABALHOTOTAL((H43);(J43))-VALOR.TEMPO(K43-I43))*TEMPO(8;0;0);E(ISDATE(H43);ISDATE(J43);H43=J43);K43-I43);"ERRO INESPERADO")

E você, como resolveria esse desafio?

Entre para ver ou adicionar um comentário

Outras pessoas também visualizaram

Conferir tópicos