Excel-formule: ALS met booleaanse logica -

Inhoudsopgave

Generieke formule

= IF(criteria1*criteria2*criteria3,result)

Samenvatting

In het getoonde voorbeeld is de formule in F8:

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

Opmerking: dit is een matrixformule en moet worden ingevoerd met control + shift + enter.

Uitleg

Opmerking: dit voorbeeld laat zien hoe u een geneste IF-formule vervangt door een enkele IF in een matrixformule met behulp van booleaanse logica. Deze techniek kan worden gebruikt om de complexiteit in complexe formules te verminderen. Het voorbeeld is echter alleen ter illustratie. Dit specifieke probleem kan gemakkelijk worden opgelost met SUMIFS of SUMPRODUCT.

De formules in F7 en F8 retourneren hetzelfde resultaat, maar hebben verschillende benaderingen. In cel F7 hebben we de volgende formule, met behulp van een geneste IF-benadering:

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

Dit is hoe Excel de IF's binnen SUM evalueert:

=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 wezen filtert elke IF waarden in de volgende IF, en alleen grootheden waarbij alle drie de logische tests WAAR retourneren "overleven" de bewerking. Andere grootheden worden FALSE en worden door SUM als nul geëvalueerd. Het uiteindelijke resultaat in SUM is een reeks waarden zoals deze:

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

FALSE-waarden resulteren in nul en de functie SOM retourneert het eindresultaat van 18.

In F8 hebben we deze formule, die een enkele IF en booleaanse logica gebruikt:

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

Elke logische uitdrukking retourneert een array van WAAR en ONWAAR waarden. Wanneer deze arrays met elkaar worden vermenigvuldigd, voegt de wiskundige bewerking waarden samen met enen en nullen in een enkele array als volgt:

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

De array van 1s en 0s filtert irrelevante gegevens eruit en hetzelfde resultaat wordt geleverd aan SUM:

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

Net als eerder retourneert SUM een eindresultaat van 18.

Interessante artikelen...