Intersección de intervalos de datas

Unha das tarefas típicas para un usuario de Microsoft Excel. Temos dous intervalos de datas do tipo "principio-fin". O reto é determinar se estes intervalos se solapan e, de ser así, en cantos días.

Cruzar ou non?

Comecemos por resolver a cuestión de se en principio hai unha intersección de intervalos? Supoñamos que temos unha táboa de quendas de traballo para os empregados como esta:

Vese claramente que as quendas de traballo de Yaroslav e Elena se cruzan, pero como calculalo sen recorrer a construír un calendario e control visual? A función axudaranos SUMPRODUCT (SUMAPRODUTO).

Imos inserir outra columna na nosa táboa cunha fórmula que dea o valor booleano TRUE se as datas se cruzan:

Cantos días é a travesía?

Se fundamentalmente non é fácil entender se os nosos intervalos se cruzan ou non, pero saber exactamente cantos días caen exactamente na intersección, entón a tarefa faise máis complicada. Loxicamente, é necesario "bombear" ata 3 situacións diferentes nunha fórmula:

  • os intervalos non se solapan
  • un dos intervalos absorbe completamente o outro
  • intervalos se cruzan parcialmente

De cando en vez, vexo a implementación deste enfoque por outros usuarios que usan unha morea de funcións IF aniñadas, etc.

De feito, todo se pode facer ben usando a función MEDIANA (MEDIÁN) da categoría Estatístico.

Se designamos condicionalmente o inicio do primeiro intervalo como N1, e o final para K1, e o comezo do segundo N2 e rematar para K2, entón en termos xerais a nosa fórmula pódese escribir como:

=MEDIANO(N1;K1+ 1;K2+1)-MEDIANO(N1;K1+ 1;N2)

Compacto e elegante, non? 😉

  • Como funciona realmente Excel coas datas? Como calcular o número de días naturais ou laborables entre datas?
  • Como crear un calendario de calendario (vacacións, adestramentos, quendas...) en Excel usando o formato condicional?
  • Comprobación dunha ou máis condicións con funcións IF (IF).

Deixe unha resposta