Fórmula condicional anidada

Respuesta de
a
Usuario
Hola Prozac:
De nuevo acudo a ti como mi experto favorito así como a tus conocimientos por si me puedes proporcionar ayuda para la elaboración de una fórmula condicional anidada que me tiene...
El propósito es conseguir una especie de Gantt en un calendario de producción, donde en F7:ED7 están las fechas, en F8:ED8 los turnos (hay 3 turnos T1, T2, T3) y en F10:ED40 las celdas de los turnos que pertenecen a cada día, es decir: F10 al T1 de 20/09/2011, G10 al T2 de 20/09/2011, H10 al T3 de 20/09/2011 y luego vuelve a empezar el turno con I10 T1 de 21/09/2011.... etc
Los datos iniciales están en A10 Fecha Ini., en C10 Fecha Fin, en B10 Turno Ini. Y en D10 Turno Fin.
La idea de la fórmula condicional es que debería conseguir que, ej.: si la producción empieza en el turno 1 el 20/09/2011 y acaba en turno 2 el 22/09/2011... todas las celdas que están entre la fila F10 y M10 ambas incluidas, escriba "X" y el resto "A". Luego con formato condicional colorear según la letra.
Para el caso de que solo fuesen la fecha de inicio y la fecha fin sin los condicionantes de los turnos, he conseguido que funcione esto: =SI(Y(F$7>=$A10;F$7He probado con =SI(Y(F$7>=$A10;F$7=$B10;F8Alguna sugerencia? 
Gracias de antemano
Saludos
Experto
Hola. En estos casos lo que suelo hacer es la cosa por pasos para enterarme bien de qué quiero y que me sale. En tu caso y para la primera celda las cuatro condiciones serían:

=IF(F7>=A10; 1; 0)   'comprueba el dia de inicio

=IF(F8>=B10;1;0)     'comprueba el turno de inicio

=IF(F7<=C10;1;0)     'comprueba el dia final

=IF(F7<=C10;1;0)     'comprueba el turno final

Por facilidad escribo 1 para true y 0 para false. En la última condición puedes escribir otra cosa.

Ahora hay que unir las dos condiciones de inicio por un lado y las de final por otro.

=AND(IF(F7>=A10;1;0);IF(F8>=B10;1;0))

=AND(IF(F7<=C10;1;0);IF(F8>=D10;1;0))

Y finalmente todo en uno para que la celda tome el valor true o false si pertenece o no al slot de fabricación, que tiene la fecha en F7 y el turno en F8.

=AND(AND(IF(F7>=A10;1;0);IF(F8>=B10;1;0));AND(IF(F7<=C10;1;0);IF(F8>=D10;1;0)))

Una vez compruebes que para una celda te sale tendrás que extenderlo al resto. Para ello será útil que los valores que no cambian A10, B10... los escribas como $A$10, $B$10... de modo que al arrastrar no te los cambie. Pero primero, prueba que te funciona para una celda antes de arrastrar.

Saludos.
Usuario
Hola Prozac, gracias por tu tiempo y por responder.

Comentarte que la fórmula no funciona. Si, da verdadero o falso pero no desde fecha/turno de inicio a fecha/final, solo si el turno coincide. Es decir si ponemos TIni 1 y TFin 3 da verdadero entre estos dos datos con su coincidencia con FIni y Ffin, pero si cambiamos y ponemos TIni 2 y TFin3 o T3 y T2 o cualquier otra combinación, solo marca como verdadero los turnos que tenemos en TIni y TFin, el resto sale como falso.

Los turnos pueden empezar y terminar en 1, 2 o 3 (ej: podemos empezar 20/09/2011 en T3 y acabar en 21/09/2011 T1). Lo que se pretende es que marque como verdadero todos los turnos comprendidos entre las dos fechas desde el TIni hasta el TFin que se indique.

Pensé que esto se podía hacer con una condicional, pero a lo mejor es demasiado complejo y necesita vba como por ejemplo que seleccione desde la celda que corresponda a FIni+TIni hasta la celda que corresponda a FFin+TFin ambas inclusive, le inserte una "X" (por ejemplo) y luego con formato condicional sí encuentra "X" lo pinte de verde... es solo una idea que por supuesto no se desarrollar.

Por favor ayudame en este problema.

Gracias de nuevo por tu tiempo.

Saludos
Experto
Hola. Veo que en las fórmulas simples la cuarta está mal. Te he copiado la tercera en la cuarta por error, pero las compuestas están bien. Lo que hago es comprobar que la fecha dada F7 y el turno dado F8 cumplen las condición. Pero tienes razón han de cumplirse fecha y turno, cuando en realidad el turno solo se comprueba cuando la fecha es igual.

Por tanto habría que hacer un OR con dos condiciones:

- Que la fecha sea menor (el turno entonces da igual)

- Que a igual fecha el turno sea menor o igual

Y luego un AND de las condiciones para inicio y para fin como estaba. ¿Te animas a intentarlo?

Saludos.
Usuario
Prozac

Insisto con el OR y no me aclaro, no se como poner las dos condiciones, porque en realidad entiendo que serían cuatro (fecha menor de Inicio, fecha menor de Fin, igual a F.Ini y T.Ini menor o igual, igual F.Fin y T.Fin menor o igual), y luego el AND con la misma fórmula anterior.

Hechame un cable p.fvr

Gracias

Saludos
Experto
Hola. Aunque la condición sea un OR no es necesario usar la función OR a toda cosa. Los IFs anindados permiten un resultado igual. Prueba con esto:

=IF(AND(IF(F7>A10;1;IF(F7=A10;IF(F8>=B10;1;0);0));IF(F7<C10;1;IF(F7=C10;IF(F8<=D10;1;0);0)));1;0)

Saludos.