Intersecção de intervalos de datas

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)

Deixe um comentário