Formule Excel: IF avec logique booléenne -

Table des matières

Formule générique

= IF(criteria1*criteria2*criteria3,result)

Sommaire

Dans l'exemple illustré, la formule en F8 est:

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

Remarque: il s'agit d'une formule matricielle et doit être saisie avec Ctrl + Maj + Entrée.

Explication

Remarque: Cet exemple montre comment remplacer une formule IF imbriquée par un IF unique dans une formule matricielle à l'aide de la logique booléenne. Cette technique peut être utilisée pour réduire la complexité des formules complexes. Cependant, l'exemple est uniquement à titre d'illustration. Ce problème particulier pourrait être facilement résolu avec SUMIFS ou SUMPRODUCT.

Les formules en F7 et F8 renvoient le même résultat, mais ont des approches différentes. Dans la cellule F7, nous avons la formule suivante, en utilisant une approche IF imbriquée:

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

Voici comment Excel évalue les IF à l'intérieur de 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)))

En substance, chaque IF "filtre" les valeurs dans le IF suivant, et seules les quantités où les trois tests logiques renvoient TRUE "survivent" à l'opération. Les autres quantités deviennent FAUX et sont évaluées par SUM comme nulles. Le résultat final dans SUM est un tableau de valeurs comme celui-ci:

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

Les valeurs FALSE sont évaluées à zéro et la fonction SOMME renvoie un résultat final de 18.

En F8, nous avons cette formule, qui utilise un seul IF et une logique booléenne:

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

Chaque expression logique renvoie un tableau de valeurs TRUE et FALSE. Lorsque ces tableaux sont multipliés ensemble, l'opération mathématique contraint les valeurs à des uns et des zéros dans un seul tableau comme ceci:

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

Le tableau de 1 et de 0 filtre les données non pertinentes et le même résultat est fourni à SUM:

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

Comme précédemment, SUM renvoie un résultat final de 18.

Articles intéressants...