jueves, 27 de febrero de 2014

La Disyunción exclusiva (el O exclusivo) en Excel.

Hablaré en esta ocasión sobre una función que apareció en la última versión de Excel 2013, la función XO llamada disyunción exclusiva o también O exclusivo.
Ésta es una función lógica, por lo que siempre cuesta bastante comprender su funcionamiento, más aún cuando ya existía otra función O (disyunción lógica) parecida pero NO igual.

A modo de resumen creo interesante definir, a grandes rasgos, las diferentes funciones O, XO e Y:
La función Y (conjunción lógica), que devuelve VERDADERO cuando todos los argumentos son VERDADEROS, será suficiente con que solo uno no se cumpla para que nuestra función sea FALSO.
(puedes leer algo más en wikipedia).

La función O (disyunción lógica), que devuelve VERDADERO cuando al menos uno de los argumentos sea VERDADERO, únicamente será FALSO cuando todos los argumentos sean FALSO.
(puedes leer algo más en wikipedia).

Y la función XO (disyunción exclusiva), que devolverá VERDADERO cuando sólo un operando es VERDADERO pero no todos a la vez.
(puedes leer algo más en wikipedia).


Plantadas las bases teóricas, veámoslo sobre un ejemplo:



Como observamos en el rango D5:D12 hemos aplicado la siguiente fórmula:
=O(A5="norte";B5="rojo")
la disyunción lógica tradicional, obteniendo por tanto VERDADERO en aquellas combinaciones en las que al menos uno de los valores cumple.

En el rango E5:E12 he aplicado la función de Excel 2013 XO:
=XO(A5="norte";B5="rojo")
como era de esperar devuelve VERDADERO cuando se cumple sólo uno de los criterios y FALSO cuando se verifican ambos o ninguno.

En el rango de celdas F5:F12 hemos replicado con las funciones lógicas Y, O y NO la función XO (inexistente en versiones anteriores a 2013). Nuestra primera posibilidad sería construir algo del estilo:
O(Y(A;NO(B));Y(NO(A);B))
en formato Excel y aplicado sobre nuestro ejemplo:
=O(Y(A5="norte";NO(B5="rojo"));Y(NO(A5="norte");B5="rojo"))
obteniendo el mismo resultado que con XO.

Otras forma diferente de llegar a lo mismo, en el rango G5:G12, sería aplicar el algoritmo lógico:
Y(NO(Y(A;B));O(A;B))
en formato Excel:
=Y(NO(Y(A5="norte";B5="rojo"));O(A5="norte";B5="rojo")).


Sin duda un avance importante de Excel en esta versión 2013...

4 comentarios:

  1. ayuda porfa tengo esta duda espero me puedan apoyar

    edad minima edad maxima categoria
    4 6 pre infantil
    7 10 infantil
    11 12 pre juvenil
    13 16 juvenil
    17 20 adolecente
    20 25 aficionado


    edad 8
    categoria

    formula que busque en los rangos de edad en base a la edad y genere a que categoria pertenece



    ResponderEliminar
    Respuestas
    1. Hola, suponiendo tus datos en el rango A1:C7
      y que en E3 introduces el dato de edad para conocer su categoría correspondiente, entonces en F3:
      =BUSCARV(E3;$A$2:$C$7;3)

      Saludos cordiales

      Eliminar
  2. la segunda forma de representar el xor es incorrecta, saludos

    ResponderEliminar
    Respuestas
    1. Hola, que tal Fernando
      un placer saludarte igualmente...
      GRacias por tu comentario.... y ¿cuál sería la forma correcta en tu opinión?

      Gracias por aportar

      Eliminar

Nota: solo los miembros de este blog pueden publicar comentarios.