Función Si con funciones lógicas anidadas en Excel

Por

La función condicional SI es de gran utilidad en Excel y si la utilizamos en combinación con funciones lógicas, incluso anidadas, los resultados son prometedores.

Para tratar de explicar su funcionamiento y utilidad, haremos un sencillo ejemplo que trate de recoger la función condicional SI y las funciones lógicas Y, y O.

Supongamos que la empresa remunera al trabajador con una comisión según el valor de sus ventas y según el precio con que coloque los productos. Supongamos que la empresa maneja 2 precios  para sus productos, y el vendedor por supuesto tratará de colocar el producto al  precio más alto, siendo remunerado también por ello.

Veamos las condiciones:

  1. Si el trabajador vende más de 10.000.000 al mes y coloca los productos con el precio 2, la comisión será del 10%.
  2. Si el trabajador vende más de 10.000.000 al mes y coloca los productos con el precio 1, la comisión será del 4%.
  3. Si el trabajador vende menos de 10.000.000 pero coloca los productos al precio 2, la comisión será del 2%.
  4. Si el trabajador vende menos de 10.000.00  pero coloca los productos al precio 1, la comisión será del 1%.
  5. Si el trabajador no hace nada de lo anterior, la comisión será del 0%.

Luce complicado, ¿verdad?

En los primero dos puntos, existen dos condiciones y las dos se deben cumplir para tener derecho a la comisión allí fijada. Si una de las condiciones no se cumple, no hay lugar a la comisión señalada. Por ello utilizamos la función lógica Y, que le indica a Excel que las dos condiciones se deben cumplir. Que la venta sea mayor a… y que el precio de venta sea…

Los puntos 3 y 4, también contienen dos condiciones, pero con que se cumpla una de ellas dará lugar a la comisión pactada. La idea es que el empleado  venda más de 10.000.000 al mes, pero si no lo hace y  coloca los productos a un precio mayor, se le dará una comisión determinada. Allí se utiliza la función lógica O, que le dice a Excel que aplique la comisión si una de las dos condiciones se cumple.

El punto 5 nos dice que si no se da ninguno de los supuestos planteados, es decir que el trabajador no cumplió con ninguno de sus objetivos, no tendrá derecho a comisión alguna y el resultado será 0.

La fórmula para recoger lo anterior será la siguiente:

=SI(Y(B2>10000000;C2=2);"10%";SI(Y(B2>10000000;C2=1);"4%";SI(O(B2>10000000;C2=2);"2%";SI(O(B2>10000000;C2=1);"1%";0))))

Aquí hemos supuesto que las ventas están en la celda B2 y el precio al que se colocaron en la celda C2.

Con esta fórmula en una celda se hacen todos los cálculos necesarios y se obtiene el valor deseado.

Contenido relacionado:
Gerencie.com en su correo.

Suscríbase y nosotros colocaremos en su bandeja de entrada la mejor información que generamos diariamente.


Déjenos su opinión

7 Opiniones
  1. Miguel Dice:

    Buenas tardes,

    Estoy realizando un ejercicio donde Ej

    M1 tiene un valor de 80%
    M2 tiene un valor de 20%

    Donde en M1 se puede colocar Si, No y NA
    Donde en M2 se puede colocar Si, No y NA

    Donde si en M1 tiene Si y M2 tiene No es igual a 80%
    Donde si en M1 tiene Si y M2 tiene Si, es igual a 100%
    Donde si en M1 tiene No y M2 tiene Si es igual a 20%

    Ahora lo que quiero es colocar si en M1 tiene NA y M2 tiene Si, que ese valor de 20% valga el 100% en la celda de resultado

    Responder
  2. Victor Dice:

    Hola mi nombre es Victor, tengo un caso interesante a ver si me pueden ayudar: lo que necesito es que la formula me devuelva un valor con un simple BUSCARV, pero que lo devuelva solo si cumple dos condiciones "un Mercado y un Periodo", ya lo hice con el primer Mercado llamado NC y me devuelve los valores correctos en función del periodo, pero al agregar el siguiente mercado ya no me funciona, me dice que el valor es FALSO, pero la realidad es que las condiciones para el siguiente mercado son las correctas, así que hasta ahí estoy estancado. Ahora les explico cómo hice la formula, hasta donde me funciona bien y donde me deja de funcionar:

    En B1 colocaré siempre el Mercado Deseado. (Tiene un filtro que está amarrado a una tabla con todos los nombres de los mercados)
    En B2 colocaré siempre el Periodo Deseado. (Tiene un filtro que está amarrado a una tabla con todos los nombres de los meses, YTD, YTG, FY, etc)
    En C94 tengo el valor a buscar el cual será comparado con una tabla y me deberá devolver el valor de la columna que le corresponda.

    Así que la fórmula que actualmente me funciona con el primer mercado y cambia en función del periodo es la siguiente:

    =SI($B$1="NC",SI($B$2="January",BUSCARV($C94,PRF!$C$95:$IJ$422,4,0),SI($B$2="February",BUSCARV($C94,PRF!$C$95:$IJ$422,5,0),SI($B$2="March",BUSCARV($C94,PRF!$C$95:$IJ$422,6,0),SI($B$2="April",BUSCARV($C94,PRF!$C$95:$IJ$422,7,0),SI($B$2="May",BUSCARV($C94,PRF!$C$95:$IJ$422,8,0),SI($B$2="June",BUSCARV($C94,PRF!$C$95:$IJ$422,9,0),SI($B$2="July",BUSCARV($C94,PRF!$C$95:$IJ$422,10,0),SI($B$2="August",BUSCARV($C94,PRF!$C$95:$IJ$422,11,0),SI($B$2="September",BUSCARV($C94,PRF!$C$95:$IJ$422,12,0),SI($B$2="October",BUSCARV($C94,PRF!$C$95:$IJ$422,13,0),SI($B$2="November",BUSCARV($C94,PRF!$C$95:$IJ$422,14,0),SI($B$2="December",BUSCARV($C94,PRF!$C$95:$IJ$422,15,0),SI($B$2="Q1",BUSCARV($C94,PRF!$C$95:$IJ$422,16,0),SI($B$2="Q2",BUSCARV($C94,PRF!$C$95:$IJ$422,17,0),SI($B$2="Q3",BUSCARV($C94,PRF!$C$95:$IJ$422,18,0),SI($B$2="Q4",BUSCARV($C94,PRF!$C$95:$IJ$422,19,0),SI($B$2="YTD",BUSCARV($C94,PRF!$C$95:$IJ$422,20,0),SI($B$2="YTG",BUSCARV($C94,PRF!$C$95:$IJ$422,21,0),SI($B$2="FY",BUSCARV($C94,PRF!$C$95:$IJ$422,22,0)

    Hasta aquí todo perfecto me funciona de maravilla, lo que hace es que si B1 tengo el mercado NC y en B2 tengo un periodo especifico busca un valor en una celda de este libro comparado con una tabla y me devuelve el valor en función del periodo y la columna que le corresponde ese periodo.

    Ahora bien, en total tengo 12 mercados, lo que necesito es cuando en B1 seleccione otro mercado por ejemplo HT, me devuelva el valor en base a ese mercado, lo que estoy haciendo es repitiendo las mismas formulas y cambiando NC por HT y en el BUCARV le estoy asignado el número de la columna que le corresponde a HT en función del periodo, pero resulta que al hacer esto el resultado obtenido es FALSO, como si las condiciones no existieran, pero la verdad es que tanto en la formula como en las celdas B1 y B2 ambas condiciones si existen, de hecho si al inicio cambio NC por HT también funciona, el problema está en agregar una segunda o siguiente condición de mercado.

    Ahora le muestro la formula con más de un mercado donde me da un resultado FALSO si en B1 selecciono HT, aunque con esta misma fórmula si seleccione en B1 NC, funciona bien, el problema está en que no está reconociendo la segunda condición del mercado.

    =SI($B$1="NC",SI($B$2="January",BUSCARV($C94,PRF!$C$95:$IJ$422,4,0),SI($B$2="February",BUSCARV($C94,PRF!$C$95:$IJ$422,5,0),SI($B$2="March",BUSCARV($C94,PRF!$C$95:$IJ$422,6,0),SI($B$2="April",BUSCARV($C94,PRF!$C$95:$IJ$422,7,0),SI($B$2="May",BUSCARV($C94,PRF!$C$95:$IJ$422,8,0),SI($B$2="June",BUSCARV($C94,PRF!$C$95:$IJ$422,9,0),SI($B$2="July",BUSCARV($C94,PRF!$C$95:$IJ$422,10,0),SI($B$2="August",BUSCARV($C94,PRF!$C$95:$IJ$422,11,0),SI($B$2="September",BUSCARV($C94,PRF!$C$95:$IJ$422,12,0),SI($B$2="October",BUSCARV($C94,PRF!$C$95:$IJ$422,13,0),SI($B$2="November",BUSCARV($C94,PRF!$C$95:$IJ$422,14,0),SI($B$2="December",BUSCARV($C94,PRF!$C$95:$IJ$422,15,0),SI($B$2="Q1",BUSCARV($C94,PRF!$C$95:$IJ$422,16,0),SI($B$2="Q2",BUSCARV($C94,PRF!$C$95:$IJ$422,17,0),SI($B$2="Q3",BUSCARV($C94,PRF!$C$95:$IJ$422,18,0),SI($B$2="Q4",BUSCARV($C94,PRF!$C$95:$IJ$422,19,0),SI($B$2="YTD",BUSCARV($C94,PRF!$C$95:$IJ$422,20,0),SI($B$2="YTG",BUSCARV($C94,PRF!$C$95:$IJ$422,21,0),SI($B$2="FY",BUSCARV($C94,PRF!$C$95:$IJ$422,22,0),SI($B$1="HOME TRADE",SI($B$2="January",BUSCARV($C94,PRF!$C$95:$IJ$422,24,0),SI($B$2="February",BUSCARV($C94,PRF!$C$95:$IJ$422,25,0),SI($B$2="March",BUSCARV($C94,PRF!$C$95:$IJ$422,26,0),SI($B$2="April",BUSCARV($C94,PRF!$C$95:$IJ$422,27,0),SI($B$2="May",BUSCARV($C94,PRF!$C$95:$IJ$422,28,0),SI($B$2="June",BUSCARV($C94,PRF!$C$95:$IJ$422,29,0),SI($B$2="July",BUSCARV($C94,PRF!$C$95:$IJ$422,30,0),SI($B$2="August",BUSCARV($C94,PRF!$C$95:$IJ$422,31,0),SI($B$2="September",BUSCARV($C94,PRF!$C$95:$IJ$422,32,0),SI($B$2="October",BUSCARV($C94,PRF!$C$95:$IJ$422,33,0),SI($B$2="November",BUSCARV($C94,PRF!$C$95:$IJ$422,34,0),SI($B$2="December",BUSCARV($C94,PRF!$C$95:$IJ$422,35,0),SI($B$2="Q1",BUSCARV($C94,PRF!$C$95:$IJ$422,36,0),SI($B$2="Q2",BUSCARV($C94,PRF!$C$95:$IJ$422,37,0),SI($B$2="Q3",BUSCARV($C94,PRF!$C$95:$IJ$422,38,0),SI($B$2="Q4",BUSCARV($C94,PRF!$C$95:$IJ$422,39,0),SI($B$2="YTD",BUSCARV($C94,PRF!$C$95:$IJ$422,40,0),SI($B$2="YTG",BUSCARV($C94,PRF!$C$95:$IJ$422,41,0),SI($B$2="FY",BUSCARV($C94,PRF!$C$95:$IJ$422,42,0)))))))))))))))))))))))))))))))))))))))))

    Alguna ayuda por favor...??

    Responder
    • Victor Dice:

      ACLARACION, en en la parte de la formula que dice HOME TRADE, realmente es HT tanto en B1 como en la formula, sin querer lo deje asi, este no es el caso para la solucionarlo, estaba haciendo otras pruebas y se me quedo así, espero sus respuestas, gracias...!!!

      Responder
  3. paulina Dice:

    alguien me puede ayudar con una formula que tengo que hacer es con la funsion si pero no me da el resultado

    Responder
  4. JOHAN SAMUEL Dice:

    hola que tal, me estoy matando con una función de excel que es "SI" "Y" pues en mi materia de programación me están pidiendo lo siguiente:

    *Nivel de desempeño de estudiantes:*
    70- insuficiente
    70-74- suficiente
    75-84 -bueno
    85-94 -notable
    95-100 -excelente
    espero me puedan auxiliar.

    Responder
    • jorge Dice:

      =si(a1<71;"insuficiente";si(a1<75;"suficiente";si(a1<85;"bueno";si(a1<95;notable;excelente))))

      donde A1 es donde esta la nota

      Responder
      • jorge Dice:

        las palabras van entre comillas " "

        Responder
En Gerencie.com está permitido opinar, criticar, discutir, controvertir, disentir, etc., pero debe hacerlo con respeto, sin insultar y sin ofender a otros.

Información legal aplicable para Colombia.