Fórmula do Excel: IF com lógica booleana -

Índice

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.

Artigos interessantes...