Formula Excel: IF con logica booleana -

Sommario

Formula generica

= IF(criteria1*criteria2*criteria3,result)

Sommario

Nell'esempio mostrato, la formula in F8 è:

(=SUM(IF((color="red")*(region="East")*(quantity>7),quantity)))

Nota: questa è una formula di matrice e deve essere immessa con control + shift + invio.

Spiegazione

Nota: questo esempio mostra come sostituire una formula IF nidificata con un singolo IF in una formula di matrice utilizzando la logica booleana. Questa tecnica può essere utilizzata per ridurre la complessità nelle formule complesse. Tuttavia, l'esempio è solo a scopo illustrativo. Questo particolare problema potrebbe essere facilmente risolto con SUMIFS o SUMPRODUCT.

Le formule in F7 e F8 restituiscono lo stesso risultato, ma hanno approcci diversi. Nella cella F7, abbiamo la seguente formula, utilizzando un approccio IF annidato:

(=SUM(IF(color="red",IF(region="east",IF(quantity>7,quantity)))))

Ecco come Excel valuta gli IF all'interno di SUM:

=IF((TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;TRUE), IF((TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE), IF((FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE),quantity)))

In sostanza, ogni IF "filtra" i valori nell'IF successivo, e solo le quantità in cui tutti e tre i test logici restituiscono TRUE "sopravvivono" all'operazione. Altre quantità diventano FALSE e vengono valutate da SUM come zero. Il risultato finale all'interno di SUM è un array di valori come questo:

=SUM((FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;8;FALSE;10))

I valori FALSE restituiscono zero e la funzione SUM restituisce un risultato finale di 18.

In F8 abbiamo questa formula, che utilizza un unico IF e una logica booleana:

=SUM(IF((color="red")*(region="East")*(quantity>7),quantity))

Ogni espressione logica restituisce una matrice di valori VERO e FALSO. Quando questi array vengono moltiplicati insieme, l'operazione matematica forza i valori a uno e zero in un singolo array come questo:

IF((0;0;0;0;0;0;1;0;1),quantity)

L'array di 1 e 0 filtra i dati irrilevanti e lo stesso risultato consegnato a SUM:

=SUM((FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;8;FALSE;10))

Come prima, SUM restituisce un risultato finale di 18.

Articoli interessanti...