Excel y Access: condiciones encadenadas.

Seguimos con la continuación de nuestra última publicación.

La semana pasada, nos quedamos en que la respuesta a la primera condición era un 'No', con lo cual debíamos seguir con la siguiente condición, es decir, con la siguiente pregunta encadenada a la primera. Esta segunda cuestión, es:

SiInm(0=0;0;SiInm(0>0 Y 3>0;0;Izq("43,6599";0-1) & Der(1000000000000+Int(Val(Der("43,6599";7-0)));12-(0-1))))

Que la podemos analizar perfectamente en el siguiente diagrama:

Y en este caso, ya no continuamos con la siguiente pregunta, puesto que el resultado es inequívocamente 'Sí', ya que 0=0; por lo tanto, el contenido de la variable [CuentaPunto] será un cero (0).

Tened en cuenta que las funciones condicionales se resuelven siempre de izquierda a derecha, de tal modo que, si hay una solución, ya no se continúa analizando el resto de posibilidades de las respuestas a las preguntas condicionales.

Por eso, como esta variable ya contiene un resultado, continuamos con la siguiente variable, [CuentaComa]):

[CuentaComa]: SiInm([EsNúmero]=0;"0";SiInm([PosiciónComa]=0;0;SiInm([PosiciónPunto]>0 Y [PosiciónComa]>0;0;Izq([Cuenta];[PosiciónComa]-1) & Der(1000000000000+Val(Der([Cuenta];[Longitud]-[PosiciónComa]));12-([PosiciónComa]-1)))))

Que sustituyendo los títulos de las variables por los valores que ya indicamos en nuestra última publicación, quedaría como sigue:

[CuentaComa]: SiInm(-1=0;"0";SiInm(3=0;0;SiInm(0>0 Y 3>0;0;Izq("43,6599";3-1) & Der(1000000000000+Val(Der("43,6599";7-3));12-(3-1)))))

El resultado a estas cuestiones condicionales encadenadas, lo podemos analizar mucho mejor con un diagrama:


Por lo tanto, la variable [CuentaComa] contendrá el valor "430000006599".

Y, ¡'Voilà'!, ya tenemos la cuenta contable de 12 dígitos, rellenada con ceros a partir de un alta del empleado, tal como '43,6599'.

Observad que la hemos conseguido, no porque el empleado haya pulsado un punto, (en este caso, la habríamos averiguado con la variable [CuentaPunto]), sino porque ha pulsado una coma.

Pero, esto no significa que no se deban averiguar los resultados de las otras dos variables que nos quedan por solucionar, porque debemos contemplar todas las posibilidades de pulsación por parte del empleado.

En el caso que nos ocupa hoy, las respuestas están claras:

¿ -1 = 0 ?, 'No'

¿ 3 = 0 ?, 'No'

¿ 0 > 0 y 3 > 0 ?, 'No', porque el operador 'y' indica que se han de cumplir ambas condiciones, y tres sí que es mayor que cero, pero cero no es mayor que cero, (es igual, pero no mayor).

Por lo tanto, se procesa el encadenamiento de las funciones 'Izq', 'Der' y 'Val', así como el operador '&'.

Así pues, por hoy, es bastante materia.

La semana que viene desarrollaré el contenido de la variable [CuentaLongitud]; porque, ¿qué ocurriría si el operario escribiese '430000006599'?, es decir, que no escribe ni un punto ni una coma, y, además, escribe los doce dígitos.

Lo veremos la semana que viene.

Hasta entonces, disfruten de la semana.

Comentarios