Excel vzorec: Počítání řádků s logikou OR -

Obsah

souhrn

Chcete-li počítat řádky pomocí logiky OR, můžete použít vzorec založený na funkci SUMPRODUCT. V zobrazeném příkladu je vzorec v G6:

=SUMPRODUCT((group="a")*((color1="red")+(color2="red")>0))

kde skupina (B5: B15), barva1 (C5: C15) a barva2 (D5: D15) jsou pojmenovány rozsahy.

Vysvětlení

Jedním ze složitějších problémů aplikace Excel je počítat řádky v sadě dat s logikou „NEBO logikou“. Existují dva základní scénáře: (1) chcete spočítat řádky, kde hodnota ve sloupci je „x“ NEBO „y“ (2) chcete počítat řádky, kde hodnota „x“ existuje v jednom sloupci NEBO jiném .

V tomto příkladu je cílem spočítat řádky, kde group = "a" AND Color1 NEBO Color2 jsou "červené". To znamená, že pracujeme se scénářem 2 výše.

S COUNTIFS

Nejprve můžete dosáhnout funkce COUNTIFS, která nativně zpracovává více kritérií. Funkce COUNTIFS však spojuje podmínky s logikou AND, takže všechna kritéria musí být TRUE, aby byla zahrnuta do počtu:

=COUNTIFS(group,"a",color1,"red",color2,"red") // returns 1

Díky tomu je COUNTIFS nepoužitelný, pokud nepoužíváme více instancí COUNTIFS:

=COUNTIFS(group,"a",color1,"red")+COUNTIFS(group,"a",color2,"red")-COUNTIFS(group,"a",color1,"red",color2,"red")

Překlad: spočítat řádky, kde skupina je „a“ a barva1 je „červená“ + počítat řádky, kde skupina je „a“ a barva2 je „červená“ - počítat řádky, kde skupina je „a“ a barva1 je „červená“ a barva2 je „ červená "(aby nedošlo k dvojímu započítání).

To funguje, ale můžete vidět, že se jedná o poněkud komplikovaný a nadbytečný vzorec.

S logickou logikou

Lepším řešením je použít logickou logiku a výsledek zpracovat pomocí funkce SUMPRODUCT. (Pokud potřebujete základní nátěr na booleovskou algebru, toto video poskytuje úvod.) V ukázaném příkladu je vzorec v G6:

=SUMPRODUCT((group="a")*((color1="red")+(color2="red")>0))

kde skupina (B5: B15), barva1 (C5: C15) a barva2 (D5: D15) jsou pojmenovány rozsahy.

První částí problému je otestovat skupinu = "a", kterou děláme takto:

(group="a")

Protože rozsah B5: B15 obsahuje 11 buněk, vrátí tento výraz pole 11 TRUE a FALSE hodnot, jako je tato:

(TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE)

Každá TRUE představuje řádek, kde je skupina „A“.

Dále musíme zkontrolovat hodnotu „červená“ buď ve sloupci1, nebo ve sloupci2. Děláme to se dvěma výrazy spojenými sčítáním (+), protože sčítání odpovídá logice OR v booleovské algebře:

(color1="red")+(color2="red")

Excel během jakékoli matematické operace automaticky vyhodnotí TRUE a FALSE hodnoty jako 1 s a 0 s, takže výsledkem výše uvedeného výrazu je pole jako toto:

(2;0;0;1;1;0;1;0;0;0;1)

První číslo v poli je 2, protože Color1 i Color2 jsou „červené“ v prvním řádku. Z níže vysvětlených důvodů se musíme proti této situaci chránit kontrolou hodnot větších než nula:

((2;0;0;1;1;0;1;0;0;0;1))>0

Nyní máme znovu řadu TRUE a FALSE hodnot:

(TRUE;FALSE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE)

Níže uvedená tabulka shrnuje, jak Excel vyhodnocuje barevnou logiku vysvětlenou výše:

V tomto okamžiku máme výsledky testování Group = "a" v jednom poli:

(TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE)

A výsledky testování „červené“ v Color1 nebo Color2 v jiném poli:

(TRUE;FALSE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE)

Dalším krokem je sloučení těchto dvou polí s logikou AND. K tomu použijeme násobení (*), protože násobení odpovídá logice AND v booleovské algebře.

Po vynásobení dvou polí dohromady máme jediné pole 1 s a 0 s, které je doručeno přímo do funkce SUMPRODUCT:

=SUMPRODUCT((1;0;0;0;1;0;0;0;0;0;0))

Funkce SUMPRODUCT vrací součet čísel 2 jako konečný výsledek. Toto je počet řádků, kde group = "a" AND Color1 NEBO Color2 jsou "červené".

Aby se zabránilo dvojímu započítání

Nechceme zdvojnásobit počet řádků, kde jsou Color1 i Color2 „červené“. Proto v níže uvedeném kódu kontrolujeme výsledky z (color1 = "red") + (color2 = "red") na hodnoty větší než nula:

((color1="red")+(color2="red"))>0

Bez této kontroly by se 2 z prvního řádku v datech zobrazily v konečném poli a způsobily, že vzorec nesprávně vrátí 3 jako konečný počet.

Možnost FILTER

Jedna hezká věc na logické logice je, že funguje perfektně s nejnovějšími funkcemi aplikace Excel, jako je XLOOKUP a FILTER. Například funkce FILTER může použít přesně stejnou logiku, jak je vysvětleno výše, k extrakci odpovídajících řádků:

=FILTER(B5:D15,(group="a")*((color1="red")+(color2="red")>0))

Výsledkem FILTRU jsou dva řádky, které splňují kritéria, jak je vidět níže:

Pokud se chcete o těchto nových funkcích dozvědět více, máme přehled a video školení.

Zajímavé články...