Uma das tarefas típicas para um usuário do Microsoft Excel. Temos dois intervalos de datas do tipo “início-fim”. O desafio é determinar se esses intervalos se sobrepõem e, em caso afirmativo, por quantos dias.
Se cruzam ou não?
Vamos começar resolvendo a questão de saber se existe uma interseção de intervalos em princípio? Suponha que tenhamos uma tabela de turnos de trabalho para funcionários como esta:
Vê-se claramente que os turnos de trabalho de Yaroslav e Elena se cruzam, mas como calcular isso sem recorrer à construção de um cronograma de calendário e controle visual? A função nos ajudará SUMPRODUCT (SUMPRODUTO).
Vamos inserir outra coluna em nossa tabela com uma fórmula que produz o valor booleano TRUE se as datas se cruzarem:
Quantos dias é a travessia?
Se fundamentalmente não é fácil entender se nossos intervalos se cruzam ou não, mas saber exatamente quantos dias caem exatamente na interseção, então a tarefa se torna mais complicada. Logicamente, é necessário “bombear” até 3 situações diferentes em uma fórmula:
- intervalos não se sobrepõem
- um dos intervalos absorve completamente o outro
- intervalos se cruzam parcialmente
De tempos em tempos, vejo a implementação dessa abordagem por outros usuários usando várias funções IF aninhadas, etc.
Na verdade, tudo pode ser feito lindamente usando a função MEDIAN (MEDIANA) da categoria Estatístico.
Se designarmos condicionalmente o início do primeiro intervalo como N1, e o fim para K1, e o início do segundo N2 e fim para K2, então, em termos gerais, nossa fórmula pode ser escrita como:
=MEDIA(N1;K1+1;K2+1)-MEDIA(N1;K1+1;N2)
Compacto e elegante, não é? 😉
- Como o Excel realmente funciona com datas? Como calcular o número de dias corridos ou úteis entre as datas?
- Como construir uma agenda de calendário (feriados, treinamentos, turnos…) no Excel usando formatação condicional?
- Verificando uma ou mais condições com as funções IF (IF)