
Generisk formel
= IF(criteria1*criteria2*criteria3,result)
Resumé
I det viste eksempel er formlen i F8:
(=SUM(IF((color="red")*(region="East")*(quantity>7),quantity)))
Bemærk: dette er en matrixformel og skal indtastes med kontrol + skift + enter.
Forklaring
Bemærk: Dette eksempel viser, hvordan man erstatter en indlejret IF-formel med en enkelt IF i en matrixformel ved hjælp af boolsk logik. Denne teknik kan bruges til at reducere kompleksiteten i komplekse formler. Imidlertid er eksemplet kun til illustration. Dette særlige problem kunne let løses med SUMIFS eller SUMPRODUCT.
Formlerne i F7 og F8 returnerer det samme resultat, men har forskellige tilgange. I celle F7 har vi følgende formel ved hjælp af en indlejret IF-tilgang:
(=SUM(IF(color="red",IF(region="east",IF(quantity>7,quantity)))))
Sådan evaluerer Excel IF'erne i 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)))
I det væsentlige "filtrerer" hver IF værdier til den næste IF, og kun størrelser, hvor alle tre logiske tests returnerer SAND "overlever" operationen. Andre mængder bliver FALSKE og vurderes af SUM som nul. Det endelige resultat inden for SUM er en række værdier som denne:
=SUM((FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;8;FALSE;10))
FALSE værdier evalueres til nul, og SUM-funktionen returnerer et slutresultat på 18.
I F8 har vi denne formel, der bruger en enkelt IF og boolsk logik:
=SUM(IF((color="red")*(region="East")*(quantity>7),quantity))
Hvert logisk udtryk returnerer en matrix med SANDE og FALSKE værdier. Når disse arrays multipliceres sammen, tvinger matematikoperationen værdier til en og nuller i et enkelt array som dette:
IF((0;0;0;0;0;0;1;0;1),quantity)
Matrixen med 1 og 0 filtrerer irrelevante data ud, og det samme resultat leveres til SUM:
=SUM((FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;8;FALSE;10))
Som før returnerer SUM et slutresultat på 18.