Mostrando entradas con la etiqueta Boole. Mostrar todas las entradas
Mostrando entradas con la etiqueta Boole. Mostrar todas las entradas

2013-08-17

Lógica de Boole en lugar de la función SI- Parte 2

En la entrada anterior vimos una alternativa a los SI anidados. En aquel ejemplo evaluábamos una serie de condiciones y devolvíamos un valor. ¿Qué sucedería si quisiéramos que en lugar de un valor devuelva un texto? Por ejemplo, en una celda podemos tener: a, b, c, o d. Y en función de la letra queremos que devuelva respectivamente: primero, segundo, tercero o cuarto.

Opción 1 - SI anidados
=SI(A1="a";"primero";SI(A1="b";"segundo";SI(A1="c";"tercero";SI(A1="d";"cuarto"))))
Seguiríamos la sintaxis habitual de los SI anidados sin problema.

Opción 2 -Boole
=REPETIR("primero";A1="a")&REPETIR("segundo";A1="b")&REPETIR("tercero";A1="c")&REPETIR("cuarto";A1="d"))

En este caso no podríamos usar la estructura de la entrada anterior pues =(A1="a")*"primero" daría un error. Empleamos la función REPETIR(texto;núm_de_veces), que repite el texto indicado un determinado número de veces, 1 si la condición es verdadera o 0 si es falsa. Al encadenar las diferentes condiciones, solamente mostrará la verdadera o nulo (celda en blanco)si no se cumple ninguna. Si en lugar de nulo queremos que nos muestre un valor, habría que añadir el siguiente trozo al final.
&REPETIR("Otro";(A1<>"a")*(A1<>"b")*(A1<>"c")*(A1<>"d")
                                       'o bien
&REPETIR("Otro";NO(O(A1={"a";"b";"c";"d"})))

Entradas relacionadas:
Lógica de Boole en lugar de la función SI -Parte 1

2013-08-11

Lógica de Boole en lugar de la función SI -Parte 1

SI() es una de las funciones más útiles y utilizadas en Excel. Básicamente, comprueba si se cumple una condición y devuelve un valor si se evalúa como VERDADERO y otro valor si se evalúa como FALSO. Sin embargo, en muchas ocasiones podemos obtener los mismos resultados de una manera más sencilla: usando la lógica de Boole.

Comparamos si A3 es mayor que B1.
=SI(A3>$B$1;VERDADERO;FALSO) 'Usando la función SI
=A3>$B$1                     'Usando lógica de Boole
Ambas fórmulas nos devolverán VERDADERO o FALSO. Pero la segunda fórmula, es más corta y clara, y Excel la calcula más rápidamente.


Puede ser útil tener esas expresiones lógicas evaluadas como 1 (VERDADERO) o 0 (FALSO). Excel trata los valores de Boole como 1 o 0 cuando los combinamos con operaciones matemáticas.
=(A3>$B$1)*1   'Multiplicando por 1       
=--(A3>$B$1)   'Usando dos signos negativos (operador unario)


También podemos asignar usar la misma lógica en lugar de SI anidados. Por ejemplo, asignar una ganancia cuando las cifras anteriores alcanzan unos objetivos:


Opción 1 - SI anidados
=SI(A3>50000;1000;SI(A3>45000;750;SI(A3>35000;750;SI(A3>25000;250;0))))) 'SI
Evalua cada condición secuencialmente de izquierda a derecha, y si se cumple alguna condición se detiene.

Opción 2 -Boole
=(A3>25000)*250+(A3>35000)*250+(A3>45000)*250+(A3>55000)*250        'Boole
Evalua toda la expresión a la vez sin detenerse. Por ejemplo si A3>35000, cumple las dos primeras condiciones.
=(VERDADERO)*250 + (VERDADERO)*250 + (FALSO)*250+ (FALSO)*250




=(1)*250 + (1)*250 + (0)*250+ (0)*250 




=500
Por esa razón, porque se acumulan las condiciones cumplidas, indicamos los incrementos de la ganancia entre cada intervalo en lugar del total de la ganancia.

Esta segunda opción es más breve, más rápida de calcular por Excel, y más fácil de escribir y de leer que la función SI anidada.

Entradas relacionadas:

Lógica de Boole en lugar de la función SI -Parte 2
Nube de datos