Obsah
Článek ukazuje několik různých způsobů, jak v aplikaci Excel získat maximální hodnotu na základě jedné nebo několika zadaných podmínek.
V našem předchozím kurzu jsme se zabývali běžným použitím funkce MAX, která je určena k vrácení největšího čísla v souboru dat. V některých situacích však můžete potřebovat proniknout do svých dat hlouběji a najít maximální hodnotu na základě určitých kritérií. To lze provést pomocí několika různých vzorců a tento článek vysvětluje všechny možné způsoby.
Vzorec MAX IF aplikace Excel
Až donedávna neměl Microsoft Excel vestavěnou funkci MAX IF pro získání maximální hodnoty na základě podmínek. Se zavedením funkce MAXIFS v aplikaci Excel 2019 můžeme podmíněné maximum provádět snadným způsobem.
V aplikaci Excel 2016 a dřívějších verzích si stále musíte vytvořit vlastní vzorec pole kombinací funkce MAX s příkazem IF:
{=MAX(IF( criteria_range = kritéria , max_range ))}Abyste viděli, jak tento obecný vzorec MAX IF funguje na skutečných datech, uvažujte následující příklad. Předpokládejme, že máte tabulku s výsledky skoku do dálky několika studentů. Tabulka obsahuje údaje za tři kola a vy hledáte nejlepší výsledek konkrétního sportovce, řekněme Jakuba. Se jmény studentů v A2:A10 a vzdálenostmi v C2:C10 má vzorec tento tvar:
=MAX(IF(A2:A10="Jacob", C2:C10))
Mějte na paměti, že vzorec pole musí být vždy zadán současným stisknutím kláves Ctrl + Shift + Enter. V důsledku toho je automaticky obklopen kroucenými závorkami, jak je znázorněno na obrázku níže (ruční zadání závorek nebude fungovat!).
V reálných pracovních listech je výhodnější zadat kritérium do některé buňky, abyste mohli snadno změnit podmínku, aniž byste měnili vzorec. Zadáme tedy požadovaný název do F1 a dostaneme následující výsledek:
=MAX(IF(A2:A10=F1, C2:C10))
Jak tento vzorec funguje
V logickém testu funkce IF porovnáváme seznam jmen (A2:A10) s cílovým jménem (F1). Výsledkem této operace je pole TRUE a FALSE, kde hodnoty TRUE představují jména, která odpovídají cílovému jménu (Jacob):
{FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE}
Pro value_ if_true zadáme výsledky dlouhého skoku (C2:C10), takže pokud je logický test vyhodnocen jako TRUE, je vráceno odpovídající číslo ze sloupce C. value_ if_false je argument vynechán, což znamená, že v případě, že podmínka není splněna, bude mít pouze hodnotu FALSE:
{FALSE;FALSE;FALSE;FALSE;5.48;5.42;5.57;FALSE;FALSE;FALSE;FALSE}
Toto pole je předáno funkci MAX, která vrátí maximální počet, přičemž ignoruje hodnoty FALSE.
Tip: Chcete-li zobrazit výše popsaná vnitřní pole, vyberte v listu příslušnou část vzorce a stiskněte klávesu F9. Režim vyhodnocování vzorců ukončíte stisknutím klávesy Esc.
Vzorec MAX IF s více kritérii
Pokud potřebujete zjistit maximální hodnotu na základě více než jedné podmínky, můžete buď:
K zahrnutí dalších kritérií použijte vnořené příkazy IF:
{=MAX(IF( kritérium_rozsah1 = kritéria1 , IF( kritérium_rozsah2 = kritéria2 , max_range )))}Nebo zpracujte více kritérií pomocí operace násobení:
{=MAX(IF(( kritérium_rozsah1 = kritéria1 ) * ( kritérium_rozsah2 = kritéria2 ), max_range ))}Řekněme, že máte výsledky chlapců a dívek v jedné tabulce a chcete zjistit nejdelší skok mezi dívkami v kole 3. Abyste to měli hotové, zadáme první kritérium (dívka) do G1, druhé kritérium (3) do G2 a pomocí následujících vzorců vypočítáme maximální hodnotu:
=MAX(IF(B2:B16=G1, IF(C2:C16=G2, D2:D16)))
=MAX(IF((B2:B16=G1)*(C2:C16=G2), D2:D16))
Protože se v obou případech jedná o vzorce pole, nezapomeňte pro jejich správné dokončení stisknout klávesy Ctrl + Shift + Enter.
Jak ukazuje obrázek níže, oba vzorce dávají stejný výsledek, takže je otázkou vašich osobních preferencí, který z nich použijete. Pro mě je vzorec s logikou Boolean jednodušší na čtení a sestavení - umožňuje přidat libovolný počet podmínek bez nutnosti vnořování dalších funkcí IF.
Jak tyto vzorce fungují
První vzorec používá dvě vnořené funkce IF k vyhodnocení dvou kritérií. V logickém testu prvního příkazu IF porovnáváme hodnoty ve sloupci Pohlaví (B2:B16) s kritériem v G1 ("Žena"). Výsledkem je pole hodnot TRUE a FALSE, kde TRUE představuje data, která odpovídají kritériu:
{FALSE; FALSE; FALSE; TRUE; TRUE; TRUE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; TRUE; TRUE; TRUE; TRUE}
Podobným způsobem druhá funkce IF kontroluje hodnoty ve sloupci Round (C2:C16) podle kritéria v G2.
Pro value_if_true argumentu ve druhém příkazu IF zadáme výsledky dlouhého skoku (D2:D16), a tím získáme položky, které mají v prvních dvou polích na odpovídajících pozicích hodnotu TRUE (tj. položky, kde je pohlaví "žena" a kolo je 3):
{FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; 4.63; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; FALSE; 4.52}
Toto konečné pole se předá funkci MAX a ta vrátí největší číslo.
Druhý vzorec vyhodnocuje stejné podmínky v rámci jednoho logického testu a operace násobení funguje jako operátor AND:
Pokud jsou hodnoty TRUE a FALSE použity v jakékoli aritmetické operaci, jsou převedeny na 1, resp. 0. A protože vynásobení 0 dává vždy nulu, má výsledné pole hodnotu 1 pouze tehdy, když jsou všechny podmínky TRUE. Toto pole je vyhodnoceno v logickém testu funkce IF, která vrací vzdálenosti odpovídající prvkům 1 (TRUE).
MAX IF bez pole
Mnoho uživatelů Excelu, včetně mě, má předsudky vůči vzorcům pro pole a snaží se jich zbavit, kde to jen jde. Naštěstí má Microsoft Excel několik funkcí, které s poli pracují nativně, a my můžeme jednu z takových funkcí, konkrétně SUMPRODUCT, použít jako jakýsi "obal" kolem MAX.
Obecný vzorec MAX IF bez pole je následující:
=SOUČIN(MAX(( kritérium_rozsah1 = kritéria1 ) * ( kritérium_rozsah2 = kritéria2 ) * max_range ))V případě potřeby můžete samozřejmě přidat další dvojice rozsah/kritéria.
Abychom viděli vzorec v akci, použijeme údaje z předchozího příkladu. Cílem je získat maximální skok atletky ve 3. kole:
=SUMPRODUCT(MAX(((B2:B16=G1) * (C2:C16=G2) * (D2:D16))))
Tento vzorec se zadává běžným stiskem klávesy Enter a vrací stejný výsledek jako vzorec pole MAX IF:
Při bližším pohledu na výše uvedený snímek obrazovky si můžete všimnout, že neplatné skoky označené v předchozích příkladech symbolem "x" mají nyní v řádcích 3, 11 a 15 hodnoty 0, a v následující části je vysvětleno proč.
Jak tento vzorec funguje
Stejně jako u vzorce MAX IF vyhodnotíme dvě kritéria porovnáním každé hodnoty ve sloupcích Gender (B2:B16) a Round (C2:C16) s kritérii v buňkách G1 a G2. Výsledkem jsou dvě pole hodnot TRUE a FALSE. Vynásobením prvků polí na stejných pozicích se hodnoty TRUE a FALSE převedou na 1, resp. 0, přičemž 1 představuje položky, které splňují obě kritéria. Třetí vynásobenípole obsahuje výsledky dlouhých skoků (D2:D16). A protože vynásobením 0 získáme nulu, zůstanou zachovány pouze položky, které mají na příslušných pozicích hodnotu 1 (TRUE):
{0; 0; 0; 0; 0; 4.63; 0; 0; 0; 0; 0; 0; 0; 0; 4.52}
V případě max_range obsahuje jakoukoli textovou hodnotu, operace násobení vrátí chybu #VALUE, kvůli které nebude celý vzorec fungovat.
Odtud ji převezme funkce MAX a vrátí největší číslo, které splňuje zadané podmínky. Výsledné pole tvořené jediným prvkem {4,63} přejde do funkce SUMPRODUCT a ta vypíše maximální číslo v buňce.
Poznámka: Vzhledem ke své specifické logice funguje vzorec s následujícími výhradami:
- Rozsah, ve kterém hledáte nejvyšší hodnotu, musí obsahovat pouze čísla. Pokud se v něm vyskytují nějaké textové hodnoty, je vrácena chyba #VALUE!.
- Vzorec nemůže vyhodnotit podmínku "nerovná se nule" v záporném souboru dat. Chcete-li zjistit maximální hodnotu bez ohledu na nuly, použijte vzorec MAX IF nebo funkci MAXIFS.
Vzorec Excel MAX IF s logikou OR
Zjištění maximální hodnoty, když jakýkoli ze zadaných podmínek je splněna, použijte již známý vzorec pole MAX IF s logikou Boolean, ale místo násobení podmínek je sečtěte.
{=MAX(IF(( kritérium_rozsah1 = kritéria1 ) + ( kritérium_rozsah2 = kritéria2 ), max_range ))}Alternativně můžete použít následující vzorec, který neobsahuje pole:
=SOUČIN(MAX((( kritérium_rozsah1 = kritéria1 ) + ( kritérium_rozsah2 = kritéria2 )) * max_range ))Jako příklad uveďme nejlepší výsledek v kolech 2 a 3. Upozorňujeme, že v jazyce Excel je úloha formulována jinak: vracíme maximální hodnotu, pokud je kolo 2 nebo 3.
S koly uvedenými v B2:B10, výsledky v C2:C10 a kritérii v F1 a H1 je vzorec následující:
=MAX(IF((B2:B10=F1) + (B2:B10=H1), C2:C10))
Vzorec zadejte stisknutím kombinace kláves Ctrl + Shift + Enter a získáte tento výsledek:
Maximální hodnotu se stejnými podmínkami lze také zjistit pomocí tohoto vzorce, který se netýká pole:
=SOUČIN(MAX(((B2:B10=F1) + (B2:B10=H1)) * C2:C10))
V tomto případě však musíme všechny hodnoty "x" ve sloupci C nahradit nulami, protože SUMPRODUCT MAX pracuje pouze s číselnými daty:
Jak tyto vzorce fungují
Vzorec pole funguje úplně stejně jako MAX IF s logikou AND s tím rozdílem, že kritéria spojujete pomocí operace sčítání namísto násobení. Ve vzorcích pole funguje sčítání jako operátor OR:
Sečtením dvou polí TRUE a FALSE (které jsou výsledkem kontroly hodnot v B2:B10 podle kritérií v F1 a H1) vznikne pole 1 a 0, kde 1 představuje položky, pro které je některá z podmínek TRUE, a 0 představuje položky, pro které jsou obě podmínky FALSE. Výsledkem je, že funkce IF "zachová" všechny položky v C2:C10 ( value_if_true ), pro které je některá z podmínek TRUE (1); zbývající položky jsou nahrazeny FALSE, protože se jedná o value_if_false argument není uveden.
Vzorec bez pole funguje podobně. Rozdíl je v tom, že místo logického testu IF vynásobíte prvky pole 1 a 0 prvky pole výsledků dlouhého skoku (C2:C10) na odpovídajících pozicích. Tím se zruší položky, které nesplňují žádnou podmínku (mají v prvním poli 0), a zachovají se položky, které splňují jednu z podmínek (mají v prvním poli 1).pole).
MAXIFS - snadný způsob vyhledání nejvyšší hodnoty s podmínkami
Uživatelům aplikací Excel 2019, 2021 a Excel 365 odpadají potíže s krocením polí při sestavování vlastního vzorce MAX IF. Tyto verze aplikace Excel poskytují dlouho očekávanou funkci MAXIFS, díky níž je nalezení největší hodnoty pomocí podmínek hračkou.
V prvním argumentu MAXIFS zadáte rozsah, ve kterém má být nalezena maximální hodnota (v našem případě D2:D16), a v dalších argumentech můžete zadat až 126 dvojic rozsah/kritérium. Například:
=MAXIFS(D2:D16, B2:B16, G1, C2:C16, G2)
Jak ukazuje obrázek níže, tento jednoduchý vzorec nemá problém se zpracováním rozsahu, který obsahuje jak číselné, tak textové hodnoty:
Podrobné informace o této funkci naleznete v části Funkce MAXIFS aplikace Excel s příklady vzorců.
Takto můžete v Excelu zjistit maximální hodnotu pomocí podmínek. Děkuji vám za přečtení a doufám, že se příští týden uvidíme na našem blogu!
Cvičebnice ke stažení
Příklady vzorců Excel MAX IF (.xlsx soubor)