lunes, 25 de febrero de 2013

¿Se solapan las fechas?

En una hoja de cálculo se han puesto los programas de utilización de tres máquinas (B2:D18). Cada fila señala las fechas de comienzo y fin previstas para la realización de una tarea. Sin embargo, existe el riesgo de que se hayan cometido errores y algunas máquinas se hayan programado de modo que inicien sus actividades antes de terminar el trabajo de la tarea anterior.

Debemos determinar si se producen solapamientos en las programaciones de las máquinas. Los resultados irán en la columna E. Las columnas G a M se usarán para obtener resultados intermedios.
El razonamiento para resolver el problema lo haremos con la Máquina A de la celda B4. Constará de 8 pasos:
  1. Asignar FALSO a la máquina que estamos analizando (en nuestro caso la de la celda B4) y VERDADERO al resto (esto dará la primera matriz de valores VERDADERO y FALSO).
  2. Comprobar si el valor de B4 coincide con los otros valores de la columna B (segunda matriz, con valores VERDADERO Y FALSO).
  3. Comprobar si la fecha final de D4 es anterior a todas las fechas de comienzo (matriz con valores VERDADERO Y FALSO). Comprobar si la fecha inicial de C4 es posterior a todas las fechas finales (matriz con valores VERDADERO Y FALSO). Sumar ambas matrices (obtendremos la tercera matriz, con ceros y unos).
  4. Sustituir los ceros por unos y viceversa (se creará la cuarta matriz, con ceros y unos).
  5. Multiplicar las matrices de los apartados 1), 2) y 4).
  6. Sumar los elementos de la esta última matriz.
  7. Si el resultado es cero, no hay solapamiento. En caso contrario, hay solapamiento.
  8. Combinar todas las fórmulas en E4.
Seleccionamos G4:G18 y escribimos:
=FILA($B4)<>FILA($B$4:$B$18)     [Terminar con Ctrl + Mayús + Intro]

La primera referencia ($B4) debe ser mixta ya que una vez obtenida la fórmula definitiva la pondremos en E4 y la copiaremos hacia abajo. De ese modo, $B4 pasará a ser $B5, $B6...

Seleccionamos H4:H18 y escribimos:
=($B4=$B$4:$B$18)     [Terminar con Ctrl + Mayús + Intro]

Seleccionamos I4:I18 y escribimos:
=($D4<$C$4:$C$18)+($C4>$D$4:$D$18)     [Terminar con Ctrl + Mayús + Intro

Seleccionamos J4:J18 y escribimos:
=--NO($I$4:$I$18)     [Terminar con Ctrl + Mayús + Intro]

Seleccionamos K4:K18 y escribimos:
=($G$4:$G$18)*($H$4:$H$18)*($J$4:$J$18)     [Terminar con Ctrl + Mayús + Intro]

En L4:
=SUMA($K$4:$K$18)     [Terminar con Intro]

En M4:
=SI(L4=0;"No";"Sí")     [Terminar con Intro]

Sólo falta poner la fórmula compuesta en E4.

En E4:
=SI(SUMA((FILA($B4)<>FILA($B$4:$B$18))*(($B4=$B$4:$B$18))*(--NO(($D4<$C$4:$C$18)+($C4>$D$4:$D$18))))=0;"No";"Sí")     [Terminar con Ctrl + Mayús + Intro]

Extendemos la fórmula hasta la fila 18 y eliminamos las columnas G:M.




1 comentario: