Eu realmente gostaria de poder anexar arquivos
Se alguém tem uma solução para isso, avise - me.
Eu tenho uma solução para você. Primeiro, alguma configuração:
Você pode configurar a mesma coisa com intervalos nomeados dinâmicos e usá-los em suas fórmulas, mas eu gosto de tabelas, então usei essas.
Eu criei uma tabela nas colunas A: B chamado tblTimeLog
Tem dois campos: Iniciar, Parar
É aqui que você insere todos os seus horários de início e término conforme necessário
Eu criei uma segunda tabela nas colunas D: G chamada tblTimeSummary Review,
Tem 4 campos: Intervalo, Intervalo, Intervalo, Tempo Total
Início do intervalo & Parar são conveniências
Você poderia fazer tudo com um único campo de texto mostrando o intervalo de tempo, mas as fórmulas são muito mais simples se você as dividir |
Estes dois terão intervalos de tempo como 07:00 e 07:30, 07:30 e 08:00, etc.
Eu digitei estes em mão e autofill
Interval simplesmente combina os dois por uma questão de apresentação para que você obtenha coisas como "07:00 - 07:30", "07:30 - 08:00", etc.
Eu usei uma fórmula aqui: =TEXT([@[Interval Start]],"HH:mm") & " - " & TEXT([@[Interval Stop]],"HH:mm")
O tempo total é onde ele calculará quanto trabalho foi feito nesse intervalo.
Aqui está a grande fórmula do Tempo Total:
=SUMPRODUCT((tblTimeLog[Start]<=[@[Interval Stop]])*(tblTimeLog[Stop]>[@[Interval Start]])*(IF([@[Interval Stop]]<=tblTimeLog[Stop],[@[Interval Stop]],tblTimeLog[Stop])-IF([@[Interval Start]]>tblTimeLog[Start],[@[Interval Start]],tblTimeLog[Start])))*24*60
Vamos dividir isso% SUMPRODUCT
criará matrizes, multiplicará cada linha e somará essas linhas
É importante saber que isso tratará TRUE
como 1 e FALSE
como 0
O primeiro array é (tblTimeLog[Start]<=[@[Interval Stop]])
Isso localiza todas as entradas de log iniciadas antes do final desse intervalo
O segundo array é a ideia oposta (tblTimeLog[Stop]>[@[Interval Start]])
Localiza todas as entradas de log que terminaram após o início desse intervalo
Juntos, eles localizam todas as entradas de log que possuem algum tempo dentro do intervalo
(IF([@[Interval Stop]]<=tblTimeLog[Stop],[@[Interval Stop]],tblTimeLog[Stop])
Esta matriz seleciona o final do intervalo ou o final da atividade, o que ocorrer primeiro
IF([@[Interval Start]]>tblTimeLog[Start],[@[Interval Start]],tblTimeLog[Start])
Esta matriz seleciona o início do intervalo ou o início da atividade, o que tiver passado
A diferença entre os últimos dois arrays dá a você quanto tempo de cada entrada de log foi gasto nesse intervalo específico.
*24*60
este bit no final apenas transforma o valor de tempo em dias em um valor em minutos
Vamos resumir com algum pseudo-código:
=Sum((If the log entry is in this interval)*(How much time was spent in this interval))
O primeiro array será 1 ou 0 e o segundo será algum valor de tempo.
Multiplicando-os juntos dá uma matriz de valores de 0 e tempo
Somando isso, você tem o tempo total registrado naquele intervalo -