![](https://cdn.wiki-base.com/5115987/excel_formula_if_with_boolean_logic__2.png.webp)
Fórmula genérica
= IF(criteria1*criteria2*criteria3,result)
Resumo
No exemplo mostrado, a fórmula em F8 é:
(=SUM(IF((color="red")*(region="East")*(quantity>7),quantity)))
Observação: esta é uma fórmula de matriz e deve ser inserida com control + shift + enter.
Explicação
Observação: este exemplo demonstra como substituir uma fórmula IF aninhada por um único IF em uma fórmula de matriz usando lógica booleana. Essa técnica pode ser usada para reduzir a complexidade em fórmulas complexas. No entanto, o exemplo é apenas ilustrativo. Este problema específico pode ser facilmente resolvido com SUMIFS ou SUMPRODUCT.
As fórmulas em F7 e F8 retornam o mesmo resultado, mas têm abordagens diferentes. Na célula F7, temos a seguinte fórmula, usando uma abordagem IF aninhada:
(=SUM(IF(color="red",IF(region="east",IF(quantity>7,quantity)))))
É assim que o Excel avalia os IFs dentro 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)))
Em essência, cada IF "filtra" valores para o próximo IF e apenas as quantidades em que todos os três testes lógicos retornam TRUE "sobrevivem" à operação. Outras quantidades se tornam FALSE e são avaliadas por SUM como zero. O resultado final dentro de SUM é uma matriz de valores como este:
=SUM((FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;8;FALSE;10))
Os valores FALSE são avaliados como zero e a função SUM retorna o resultado final de 18.
Em F8, temos esta fórmula, que usa um único IF e lógica booleana:
=SUM(IF((color="red")*(region="East")*(quantity>7),quantity))
Cada expressão lógica retorna uma matriz de valores TRUE e FALSE. Quando essas matrizes são multiplicadas juntas, a operação matemática força os valores para uns e zeros em uma única matriz, como esta:
IF((0;0;0;0;0;0;1;0;1),quantity)
A matriz de 1s e 0s filtra os dados irrelevantes e o mesmo resultado é entregue ao SUM:
=SUM((FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;8;FALSE;10))
Como antes, SUM retorna o resultado final de 18.