Microsoft Excel nabízí širokou škálu funkcí, které nám usnadňují práci s daty. Některé jsou notoricky známé a používané denně, jako SUMA, PRŮMĚR nebo KDYŽ. Existují však i funkce, které zůstávají většině uživatelů skryty, přestože mohou výrazně zjednodušit složité výpočty a ušetřit čas. Jednou z nich je logická funkce XOR. Ačkoliv je součástí Excelu již dlouho, odhaduje se, že až 99 % uživatelů ji nezná nebo aktivně nepoužívá. Pojďme to změnit!
Co jsou logické funkce? Krátké opakování A (AND) a NEBO (OR)
Než se ponoříme do tajů funkce XOR, připomeňme si dvě základní logické funkce, které pravděpodobně znáte:
- Funkce A (AND): Tato funkce vrátí hodnotu PRAVDA pouze v případě, že jsou všechny její argumenty (podmínky) vyhodnoceny jako PRAVDA. Pokud je alespoň jeden argument NEPRAVDA, výsledkem funkce A je NEPRAVDA.
- Funkce NEBO (OR): Tato funkce vrátí hodnotu PRAVDA, pokud je alespoň jeden její argument vyhodnocen jako PRAVDA. Výsledkem je NEPRAVDA pouze tehdy, když jsou všechny argumenty NEPRAVDA.
Tyto funkce se často používají v kombinaci s podmínkovou funkcí KDYŽ (IF) pro vytváření složitějších logických testů.
Představujeme funkci Xor: Exkluzivní NEBO
Funkce XOR (z anglického „Exclusive OR“, tedy „Výhradní NEBO“ nebo „Buď anebo“) funguje trochu jinak než její známější kolegyně. Její výsledek (PRAVDA nebo NEPRAVDA) závisí na počtu pravdivých argumentů.
Základní princip (pro dva argumenty):
Funkce XOR vrátí PRAVDA, pokud je právě jeden z argumentů PRAVDA. Pokud jsou oba argumenty PRAVDA nebo oba NEPRAVDA (tedy jsou stejné), funkce XOR vrátí NEPRAVDA.
Pojďme si to ukázat na jednoduché tabulce s kombinacemi PRAVDA/NEPRAVDA:
Podmínka 1 | Podmínka 2 | Funkce A | Funkce NEBO | Funkce XOR |
---|---|---|---|---|
PRAVDA | PRAVDA | PRAVDA | PRAVDA | NEPRAVDA |
PRAVDA | NEPRAVDA | NEPRAVDA | PRAVDA | PRAVDA |
NEPRAVDA | PRAVDA | NEPRAVDA | PRAVDA | PRAVDA |
NEPRAVDA | NEPRAVDA | NEPRAVDA | NEPRAVDA | NEPRAVDA |
Exportovat do Tabulek
- Funkce A:
=A(Podmínka1; Podmínka2)
vrátí PRAVDA jen v prvním řádku. - Funkce NEBO:
=NEBO(Podmínka1; Podmínka2)
vrátí PRAVDA v prvních třech řádcích. - Funkce XOR:
=XOR(Podmínka1; Podmínka2)
vrátí PRAVDA pouze ve druhém a třetím řádku, kde se hodnoty liší.
Princip pro více argumentů:
Pokud funkci XOR zadáte více než dva argumenty, pravidla se mírně mění:
- Funkce XOR vrátí PRAVDA, pokud je celkový počet argumentů s hodnotou PRAVDA lichý.
- Funkce XOR vrátí NEPRAVDA, pokud je celkový počet argumentů s hodnotou PRAVDA sudý (včetně nuly).
Příklad se třemi argumenty:
Podmínka 1 | Podmínka 2 | Podmínka 3 | Počet PRAVDA | Funkce XOR |
---|---|---|---|---|
PRAVDA | PRAVDA | PRAVDA | 3 (lichý) | PRAVDA |
PRAVDA | PRAVDA | NEPRAVDA | 2 (sudý) | NEPRAVDA |
PRAVDA | NEPRAVDA | PRAVDA | 2 (sudý) | NEPRAVDA |
NEPRAVDA | PRAVDA | PRAVDA | 2 (sudý) | NEPRAVDA |
PRAVDA | NEPRAVDA | NEPRAVDA | 1 (lichý) | PRAVDA |
NEPRAVDA | PRAVDA | NEPRAVDA | 1 (lichý) | PRAVDA |
NEPRAVDA | NEPRAVDA | PRAVDA | 1 (lichý) | PRAVDA |
NEPRAVDA | NEPRAVDA | NEPRAVDA | 0 (sudý) | NEPRAVDA |
Exportovat do Tabulek
Jak vidíte, výsledek závisí na tom, zda je počet pravdivých podmínek lichý nebo sudý.
Praktické využití funkce Xor
Možná si říkáte, k čemu je taková „divná“ funkce dobrá. Ukážeme si několik příkladů, kde XOR exceluje a může výrazně zjednodušit vaše vzorce.
Příklad 1: Splnění právě jednoho úkolu
Máme seznam studentů a dva testy. Pokud student test absolvoval, označíme to křížkem („x“). Chceme rychle identifikovat studenty, kteří splnili právě jeden test.
- Řešení bez XOR (pomocí vnořené funkce KDYŽ a A):
=KDYŽ(A(B2="x";C2="");"Ano";KDYŽ(A(B2="";C2="x");"Ano";""))
Tento vzorec kontroluje dvě podmínky: (Test1 je „x“ A ZÁROVEŇ Test2 je prázdný) NEBO (Test1 je prázdný A ZÁROVEŇ Test2 je „x“). Je to funkční, ale trochu громоздké. - Řešení s XOR (pomocí KDYŽ a XOR):
=KDYŽ(XOR(B2="x";C2="x");"Ano";"")
Vzorec je mnohem kratší! FunkceXOR(B2="x";C2="x")
vrátí PRAVDA pouze tehdy, když je právě jedna z podmínek pravdivá (tedy když je právě v jedné buňce „x“). Funkce KDYŽ pak jen zobrazí „Ano“ nebo nic.
Příklad 2: Klasifikace studentů podle výsledků testů
Máme opět studenty a dva testy, tentokrát s výsledky „prošel“ nebo „neprošel“. Potřebujeme je rozřadit:
- Oba testy „prošel“ -> „splněno“
- Právě jeden test „prošel“ -> „opakovat“
- Žádný test „prošel“ -> „propadl“
- Řešení bez XOR (pomocí vnořené funkce KDYŽ a A):
=KDYŽ(A(B2="prošel";C2="prošel");"splněno";KDYŽ(A(B2="prošel";C2="neprošel");"opakovat";KDYŽ(A(B2="neprošel";C2="prošel");"opakovat";"propadl")))
Tento vzorec vyžaduje několikanásobné vnoření funkce KDYŽ a kontrolu všech kombinací. - Řešení bez XOR (pomocí funkce IFS a A – dostupné v novějších verzích Excelu):
=IFS(A(B2="prošel";C2="prošel");"splněno";A(B2="prošel";C2="neprošel");"opakovat";A(B2="neprošel";C2="prošel");"opakovat";PRAVDA;"propadl")
Funkce IFS je přehlednější než vnořené KDYŽ, ale stále vyžaduje definování více podmínek pro stav „opakovat“. - Řešení s XOR (pomocí KDYŽ, A a XOR):
=KDYŽ(A(B2="prošel";C2="prošel");"splněno";KDYŽ(XOR(B2="prošel";C2="prošel");"opakovat";"propadl"))
Toto je nejkompaktnější řešení. První KDYŽ ověří, zda jsou oba testy „prošel“ (pomocí funkce A). Pokud ne, druhé KDYŽ použije funkci XOR.XOR(B2="prošel";C2="prošel")
vrátí PRAVDA, pokud je právě jeden test „prošel“. Pokud ani XOR nevrátí PRAVDA (což znamená, že oba jsou „neprošel“), zobrazí se „propadl“.
Příklad 3: Výpočet bonusů podle splnění kvartálních cílů
Máme tabulku tržeb za dva kvartály. Chceme přidělit bonusy:
- Tržby v obou kvartálech >= 100 000 Kč -> Plný bonus
- Tržby alespoň v jednom kvartálu >= 100 000 Kč -> Poloviční bonus
- V ostatních případech -> Nulový bonus
- Řešení s XOR (pomocí KDYŽ, A a XOR):
=KDYŽ(A(B2>=100000;C2>=100000);"Plný bonus";KDYŽ(XOR(B2>=100000;C2>=100000);"Poloviční bonus";""))
Opět elegantní řešení. První KDYŽ s funkcí A identifikuje ty, kteří splnili cíl v obou kvartálech. Pokud ne, druhé KDYŽ s funkcí XOR najde ty, kteří splnili cíl právě v jednom kvartálu. Zbývající případy (žádný kvartál nesplnil cíl) dostanou prázdnou buňku (nulový bonus).
Závěr
Funkce XOR je možná nenápadná, ale jak ukazují příklady, může být neuvěřitelně užitečná pro zjednodušení logických podmínek, zejména v situacích, kdy potřebujete zjistit, zda byla splněna právě jedna podmínka z více možností, nebo obecně lichý počet podmínek. Nahrazením složitých vnořených funkcí KDYŽ nebo kombinací s funkcemi A a NEBO pomocí XOR můžete své vzorce výrazně zkrátit a zpřehlednit.
Příště, až budete řešit podobný logický problém v Excelu, vzpomeňte si na XOR. Možná zjistíte, že je to přesně ten nástroj, který hledáte.
Často kladené otázky (FAQ)
- Otázka: Kdy bych měl/a použít XOR místo A nebo NEBO?
- Odpověď: XOR použijte specificky tehdy, když potřebujete zjistit, zda je pravdivá výhradně jedna ze dvou podmínek, nebo obecně lichý počet z více podmínek. Pro situace „všechny podmínky musí platit“ použijte A. Pro situace „alespoň jedna podmínka musí platit“ použijte NEBO.
- Otázka: Jak funkce XOR zpracovává text nebo prázdné buňky?
- Odpověď: Funkce XOR ignoruje text a prázdné buňky. Pokud potřebujete vyhodnotit textové hodnoty nebo prázdné buňky, musíte je nejprve převést na logické hodnoty pomocí porovnávacích operátorů (např.
B2="prošel"
,C2=""
).
- Odpověď: Funkce XOR ignoruje text a prázdné buňky. Pokud potřebujete vyhodnotit textové hodnoty nebo prázdné buňky, musíte je nejprve převést na logické hodnoty pomocí porovnávacích operátorů (např.
- Otázka: Může XOR opravdu nahradit složité vnořené funkce KDYŽ?
- Odpověď: V mnoha případech ano, zejména pokud logika vaší podmínky odpovídá principu „právě jeden“ nebo „lichý počet“ pravdivých vstupů. Jak ukázaly příklady, vede to k výrazně kratším a často i přehlednějším vzorcům.
- Otázka: Jaký je rozdíl mezi XOR a NEKDYŽ (NOT)?
- Odpověď: Jsou to zcela odlišné funkce. NEKDYŽ (NOT) obrací jednu logickou hodnotu (PRAVDA na NEPRAVDA a naopak). XOR porovnává dvě nebo více logických hodnot a vrací výsledek na základě počtu pravdivých vstupů.