Excel-formel: IF med boolesk logik -

Innehållsförteckning

Generisk formel

= IF(criteria1*criteria2*criteria3,result)

Sammanfattning

I exemplet som visas är formeln i F8:

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

Obs: detta är en matrisformel och måste anges med kontroll + skift + enter.

Förklaring

Obs! Det här exemplet visar hur man byter ut en kapslad IF-formel med en enda IF i en arrayformel med boolesk logik. Denna teknik kan användas för att minska komplexiteten i komplexa formler. Exemplet är dock endast för att illustrera. Det här problemet kan enkelt lösas med SUMIFS eller SUMPRODUCT.

Formlerna i F7 och F8 ger samma resultat men har olika tillvägagångssätt. I cell F7 har vi följande formel med en kapslad IF-metod:

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

Så här utvärderar Excel IF: erna 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 grund och botten "filtrerar" varje IF värden till nästa IF, och endast kvantiteter där alla tre logiska tester returnerar SANT "överlever" operationen. Andra kvantiteter blir FALSKA och utvärderas av SUM som noll. Det slutliga resultatet i SUM är en rad värden så här:

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

FALSE värden utvärderas till noll och SUM-funktionen returnerar ett slutresultat på 18.

I F8 har vi den här formeln, som använder en enda IF och boolesk logik:

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

Varje logiskt uttryck returnerar en matris med SANT och FALSKA värden. När dessa matriser multipliceras tillsammans tvingar matteoperationen värden till en och nollor i en enda matris så här:

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

Matrisen med 1 och 0 filtrerar bort irrelevanta data och samma resultat levereras till SUM:

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

Som tidigare returnerar SUM ett slutresultat på 18.

Intressanta artiklar...