Segundo ejemplo complejo usando la función SI()

Hola jóvenes

En esta entrada anterior ya se trabajó el primer ejemplo en el que la función SI() es la protagonista, y se necesitaron condiciones de cierta complejidad para darle solución el problema planteado.

En esta entrada se trabajará un segundo ejemplo que requiere del uso de la función SI() con condiciones complejas, pero en esta ocasión las condiciones se construirán a partir de rangos de valores. Sin duda el ejercicio los pondrá a sudar (y a pensar un poco más), pero que el comprenderlo y resolverlo les brindará una fórmula que podrán aplicar en su vida diaria (sobre todo en su trabajo como enfermeros).

Comencemos con el segundo ejemplo.



Segundo ejemplo

Se desea que a partir de la estatura (en metros) y el peso (en kilogramos), sea posible calcular el índice de masa corporal (IMC), con ello determinar la situación de nutrición que presenta una persona. 

Situación nutricional que se determinará en base a la siguiente tabla de valores para el IMC:
Situación nutricional Rango de valores para el IMC
Delgadez severa <16
Delgadez moderada 16 a 16.99
Delgadez leve 17 a 18.49
Normal 18.5 a 24.99
Preobeso o sobrepeso 25 a 29.99
Obesidad leve 30 a 34.99
Obesidad media 35 a 39.99
Obesidad mórbida >=40

Para obtener el IMC se empleará la siguiente fórmula: peso / (altura * altura)

Considere las siguientes referencias de celda para los valores: para la altura la celda B2, para el peso la celda D2, para calcular e IMC la celda G2.

La fórmula para obtener el IMC se convierte entonces con las referencias de celdas y queda así:

=D2 / (B2 * B2)

O en su caso se sabe que puede calcularse la altura al cuadrado con la función potencia, por lo que la fórmula puede ser:

=D2 / Potencia(B2;2)


Para dar solución a la cuestión de cómo a partir del IMC mostrar la situación nutricional (el “texto” de la primera columna de la tabla), es preciso trabajar la función si().
Para ello, primero vamos a realizar el análisis de los casos que se presentan en la tabla, lo ideal para evitar enredos, es acomodar los casos tal cual aparecen en la tabla, observe lo siguiente:

Comparar para saber si el valor es menor a 16; de ser verdad, entonces debe indicar "Delgadez severa"
De lo contrario (no es un valor menor a 16) debe
     Comparar para saber si el valor es mayor o igual que 16 pero menor a 17; de ser verdad, entonces debe indicar "Delgadez moderada";
     De lo contrario (no es un valor mayor o igual que 16 y menor a 17)  debe
Comparar para saber si el valor es mayor o igual que 17 pero menor a 18.5; de ser verdad, entonces debe indicar "Delgadez leve"
           De lo contrario (no es un valor mayor o igual que 17 y menor a 18.5) por ello debe
Comparar para saber si el valor es mayor o igual que 18.5  pero menor a 25; de ser verdad, entonces debe indicar "Normal"
            De lo contrario (no es un valor menor a 16) por ello debe
Comparar para saber si el valor es mayor o igual que 25 pero menor a 30; de ser verdad, entonces debe indicar "Preobeso"
De lo contrario (no es un valor mayor o igual que 25 y menor a 30) por ello debe
Comparar para saber si el valor es mayor o igual que 30 pero menor a 35; de ser verdad, entonces debe indicar "Obesidad leve"
De lo contrario (no es un valor mayor o igual que 30 pero menor a 35) (tome en cuenta que solo quedan dos casos por ello depende de cual comparación elija para poder colocar el argumento en si da verdadero o si da falso) por ello debe 
Comparar para saber si el valor es mayor o igual que 35 pero menor a 40; de ser verdad, entonces debe indicar "obesidad media"

De lo contrario (es el último caso un valor mayor a 40) por ello debe indicar  “obesidad morbida"


Pero antes de pretender escribir la función si() a partir del análisis, es preciso construir las condiciones que se van a necesitar. Como puede ver en el análisis en palabras están expresadas, pero en la tabla se expresan como rangos, así que en ellos nos basaremos para facilitarnos el trabajo.

Construyendo las condiciones

En el caso del primer y último rango de valores (<16; >=40) se trata de condiciones simples que prácticamente están dadas en la tabla: solo hace falta agregar la celda:

G2<16

G2>=40

  Sin embargo, para los otros 6 rangos es preciso abordar las condiciones complejas.
  • Para entender cómo construir condiciones a partir de rangos de valores (indicados en la segunda columna de la tabla), revise el material adicional proporcionado (en clases previas) en donde se explica ampliamente como construir condiciones complejas a partir de rangos de valores.
La idea general expresada en estos apuntes previos señala que, para crear condiciones complejas que impliquen rangos de valores, es posible hacer uso de la recta numérica, marcando el límite inferior y superior en la recta, determinando posteriormente hacia donde marcan los conjuntos de valores que engloba el rango de valores (si es un rango de valores conjunto o se trata de dos rangos separados), y así construir cada condición simple para posteriormente construir la condición compleja ya sea con la función Y() o con la función O(), observe lo siguiente para saber cuál aplicar:
  • Para casos en los que se forma un solo rango con valores que van de un número inferior a un número superior (ejemplo de 10 a 25; de 130 a 180), unir las condiciones simples encontradas con la función Y().
  • Para casos en los que no sea posible formar un solo rango, sino que se crean dos rangos aislados, en donde las condiciones simples no contemplan valores coincidentes, es decir, que un rango va de un valor hacia el menos infinito y el otro rango va de un valor hacia el más infinito, pero no se presenta intersección entre ambos, entonces, unir las condiciones simples encontradas con la función O().
Como ejemplo analicemos el rango 16 a 16.99 a fin de encontrar la condición compleja resultante. Hagamos uso de la recta numérica para situar el rango de valores válidos.

Basados en este rango, se procede a marcar con llaves (en rojo) dos rangos que deben ir hacia infinito: uno que va del valor menor hacia infinito positivo (16 a +∞), y otro que va de infinito negativo al de valor mayor (-∞ a 16.99), observe a continuación:
A fin de aclarar la imagen, se quita el círculo que marcaba el rango inicial. Observe que en la imagen se ha marcado del lado de infinito negativo el símbolo del operador relacional “menor que”, y del infinito positivo el símbolo del operador relacional “mayor que”. De esta forma tomando en cuenta la variable involucrada donde se almacena el IMC (G2) el operador relacional en cuestión y el valor numérico en la punta del estos nuevos rangos (ver arriba), se procede a construir las dos condiciones simples involucradas:
Teniendo las dos condiciones simples, lo que falta es encontrar la función que permite unir los dos rangos (observe que los rangos individuales se unen y es esta unión lo que determina precisamente el rango que se andaba buscando:

De esta forma, mediante la función Y() se da solución, por ello las condiciones complejas obtenidas serán los argumentos de esta función. Observe la condición compleja final:

Y(G2>16; G2<16.99)

Siguiendo la misma idea es posible construir las demás condiciones similares:

Situación nutricionalRango de valores para el IMC Condiciones
Delgadez severa<16G2 < 16
Delgadez moderada16 a 16.99Y(G2 >=16; G2 < 17)
Delgadez leve17 a 18.49Y(G2 >=17; G2 < 18.5)
Normal18.5 a 24.99Y(G2 >=18.5; G2 < 25) 
Preobeso o sobrepeso25 a 29.99Y(G2 >=25; G2 < 30)
Obesidad leve30 a 34.99Y(G2 >=30; G2 <35)
Obesidad media35 a 39.99Y(G2 >=35; G2 < 40)
Obesidad mórbida>=40G2 >=40

Retorno a la construcción de la función SI()

Una vez que se tienen las condiciones lo que puede hacer (en el paso a paso para facilitar la escritura de la función) es reescribir el análisis de forma que ahora se incluyan las condiciones:
Comparar para saber si G2 < 16; de ser verdad, entonces debe indicar "Delgadez severa"
De lo contrario (no se cumple G2 < 16) debe
      Comparar para saber si Y(G2 >=16; G2 < 17); de ser verdad, entonces debe indicar "Delgadez moderada";
      De lo contrario (no se cumple Y(G2 >=16; G2 < 17))  debe
Comparar para saber si Y(G2 >=17; G2 < 18.5); de ser verdad, entonces debe indicar "Delgadez leve"
            De lo contrario (no se cumple Y(G2 >=17; G2 < 18.5)) por ello debe
Comparar para saber si el valor es mayor o igual que 18.5  pero menor a 25; de ser verdad, entonces debe indicar "Normal"
            De lo contrario (no se cumple) por ello debe
Comparar para saber si Y(G2 >=25; G2 < 30); de ser verdad, entonces debe indicar "Preobeso"
De lo contrario (no se cumple Y(G2 >=25; G2 < 30)) por ello debe
Comparar para saber si Y(G2 >=30; G2 < 35); de ser verdad, entonces debe indicar "Obesidad leve"
De lo contrario (no se cumple Y(G2 >=30; G2 < 35)) por ello debe   
Comparar para saber si Y(G2 >=35; G2 < 40); de ser verdad, entonces debe indicar "obesidad media"

De lo contrario (no se cumple Y(G2 >=35; G2 < 40)) por ello debe indicar  “obesidad morbida"

Lo único que queda es escribir las funciones Si() anidadas, en esta ocasión lo haremos, inidiando cada función SI() en un renglón número a fin de pretender aclarar la secuencia de la anidación, observe que en todos los casos las funciones se incluyen como tercer argumento de la función si() que la contiene, por ello es que se cierran todos los paréntesis al final.

SI(D4<16;"Delgadez severa";
  SI(Y(D4>=16;D4<17);"Delgadez moderada";
         SI(Y(D4>=17;D4<18,5);"Delgadez leve";
               SI(Y(D4>=18,5;D4<25); "Normal";
                      SI(Y(D4>=25;D4<30); "Preobeso";
                             SI(Y(D4>=30;D4<35);"Obesidad leve";
                                    SI(Y(G2 >=35; G2 < 40); "obesidad media";
                                           "obesidad morbida”)))))))


Si quitamos los saltos de línea tendremos la fórmula ´que finalmente es la que debe escribirse en la celda en la que se vaya a mostrar la situación nutricional de la persona::

=SI(G2<16;"Delgadez severa"; SI(Y(G2>=16;G2<17);"Delgadez moderada"; SI(Y(G2>=17;G2<18.5);"Delgadez leve"; SI(Y(G2>=18.5;G2<25); "Normal";SI(Y(G2>=25;G2<30); "Preobeso";SI(Y(G2>=30;G2<35);"Obesidad leve"; SI(G2>=40;"obesidad morbida";"obesidad media")))))))


Solo queda capturar los valores en las celdas señaladas, calcular el IMC y después escribir esta función SI() compleja, que permitirá mostrar la situación nutricional.

AQUÍ puede descargar el contenido de la presente entrada y el presentado en la entrada anterior (los dos ejemplos de uso de la función si() con condiciones complejas).


Saludos

M.C. Bertha López Azamar




P.D. Alumno UNPA, si ya leíste la entrada, pon la letra de tu grupo y las iniciales de tus apellidos primero y luego de tu nombre en un comentario de esta entrada.