Excel: Pokud buňka obsahuje příklady vzorců

  • Sdílet Toto
Michael Brown

Výukový program obsahuje řadu příkladů vzorců "Excel if contains", které ukazují, jak vrátit něco v jiném sloupci, pokud cílová buňka obsahuje požadovanou hodnotu, jak vyhledávat s částečnou shodou a testovat více kritérií pomocí logiky OR i AND.

Jednou z nejčastějších úloh v aplikaci Excel je kontrola, zda buňka obsahuje hodnotu, která vás zajímá. Jaká hodnota to může být? Stačí jakýkoli text nebo číslo, konkrétní text nebo vůbec jakákoli hodnota (nikoli prázdná buňka).

V Excelu existuje několik variant vzorce "Pokud buňka obsahuje", podle toho, jaké hodnoty chcete přesně zjistit. Obecně platí, že pomocí funkce IF provedete logický test a vrátíte jednu hodnotu, pokud je podmínka splněna (buňka obsahuje), a/nebo jinou hodnotu, pokud podmínka splněna není (buňka neobsahuje). Níže uvedené příklady zahrnují nejčastější scénáře.

    Pokud buňka obsahuje jakoukoli hodnotu, pak

    Pro začátek se podíváme, jak najít buňky, které obsahují cokoli: jakýkoli text, číslo nebo datum. K tomu použijeme jednoduchý vzorec IF, který kontroluje buňky, které nejsou prázdné.

    IF( buňka "", value_to_return , "")

    Chcete-li například ve sloupci B vrátit hodnotu "Není prázdný", pokud buňka sloupce A ve stejném řádku obsahuje jakoukoli hodnotu, zadejte do sloupce B2 následující vzorec a poté dvakrát klikněte na malý zelený čtvereček v pravém dolním rohu, abyste vzorec zkopírovali dolů do sloupce:

    =IF(A2"", "Není prázdný", "")

    Výsledek bude vypadat podobně:

    Pokud buňka obsahuje text, pak

    Pokud chcete vyhledat pouze buňky s textovými hodnotami bez čísel a dat, použijte IF v kombinaci s funkcí ISTEXT. Zde je obecný vzorec, který vrátí nějakou hodnotu v jiné buňce, pokud cílová buňka obsahuje jakýkoli text :

    IF(ISTEXT( buňka ), value_to_return , "")

    Předpokládejme, že chcete do sloupce B vložit slovo "ano", pokud buňka ve sloupci A obsahuje text. Chcete-li to provést, vložte do B2 následující vzorec:

    =IF(ISTEXT(A2), "Ano", "")

    Pokud buňka obsahuje číslo, pak

    Podobným způsobem můžete identifikovat buňky s číselnými hodnotami (čísla a data). K tomu použijte funkci IF společně s funkcí ISNUMBER:

    IF(ISNUMBER( buňka ), value_to_return , "")

    Následující vzorec vrátí ve sloupci B hodnotu "ano", pokud odpovídající buňka ve sloupci A obsahuje libovolné číslo:

    =IF(ISNUMBER(A2), "Ano", "")

    Pokud buňka obsahuje konkrétní text

    Vyhledání buněk obsahujících určitý text (nebo čísla či data) je snadné. Napíšete regulární vzorec IF, který zkontroluje, zda cílová buňka obsahuje požadovaný text, a zadáte text, který se má vrátit, do pole value_if_true argument.

    IF( buňka =" text ", value_to_return , "")

    Chcete-li například zjistit, zda buňka A2 obsahuje "jablka", použijte tento vzorec:

    =IF(A2="jablka", "Ano", "")

    Pokud buňka neobsahuje konkrétní text

    Pokud hledáte opačný výsledek, tj. vrátit nějakou hodnotu do jiného sloupce, pokud cílová buňka neobsahuje zadaný text ("jablka"), pak proveďte jednu z následujících akcí.

    Zadejte prázdný řetězec ("") do pole value_if_true a text, který se má vrátit v value_if_false argument:

    =IF(A2="jablka", "", "Ne jablka")

    Nebo vložte operátor "not equal to" do položky logical_test a text, který se má vrátit v value_if_true:

    =IF(A2 "jablka", "Ne jablka", "")

    V každém případě vzorec poskytne tento výsledek:

    Pokud buňka obsahuje text: vzorec rozlišující velká a malá písmena

    Chcete-li ve vzorci rozlišovat velká a malá písmena, použijte funkci EXACT, která kontroluje, zda se dva textové řetězce přesně shodují, včetně velikosti písmen:

    =IF(EXACT(A2, "APPLES"), "Ano", "")

    Můžete také zadat textový řetězec modelu do některé buňky (například do C1), opravit odkaz na buňku pomocí znaku $ ($C$1) a porovnat cílovou buňku s touto buňkou:

    =IF(EXACT(A2,$C$1), "Ano", "")

    Pokud buňka obsahuje určitý textový řetězec (částečná shoda)

    Skončili jsme s triviálními úlohami a přecházíme k náročnějším a zajímavějším :) V tomto příkladu je potřeba tří různých funkcí, abychom zjistili, zda je daný znak nebo podřetězec součástí obsahu buňky:

    IF(ISNUMBER(SEARCH(" text" , buňka )), value_to_return ,"")

    Postupujte zevnitř ven, zde je popis toho, co tento vzorec dělá:

    • Funkce SEARCH vyhledá textový řetězec, a pokud jej najde, vrátí pozici prvního znaku, v opačném případě chybu #VALUE!.
    • Funkce ISNUMBER kontroluje, zda funkce SEARCH uspěla nebo neuspěla. Pokud funkce SEARCH vrátila nějaké číslo, funkce ISNUMBER vrátí hodnotu TRUE. Pokud funkce SEARCH skončila chybou, funkce ISNUMBER vrátí hodnotu FALSE.
    • Nakonec funkce IF vrátí zadanou hodnotu pro buňky, které mají v logickém testu hodnotu TRUE, jinak prázdný řetězec ("").

    A nyní se podívejme, jak tento obecný vzorec funguje v reálných pracovních listech.

    Pokud buňka obsahuje určitý text, vložte hodnotu do jiné buňky.

    Předpokládejme, že máte seznam objednávek ve sloupci A a chcete najít objednávky s určitým identifikátorem, například "A-". Úlohu lze provést pomocí tohoto vzorce:

    =IF(ISNUMBER(SEARCH("A-",A2)), "Platné",")

    Místo toho, abyste řetězec pevně zakódovali do vzorce, můžete jej zadat do samostatné buňky (E1) a na tuto buňku se ve vzorci odkázat:

    =IF(ISNUMBER(SEARCH($E$1,A2)), "Platné",")

    Aby vzorec správně fungoval, nezapomeňte uzamknout adresu buňky obsahující řetězec se znakem $ (absolutní odkaz na buňku).

    Pokud buňka obsahuje určitý text, zkopírujte jej do jiného sloupce.

    Pokud chcete obsah platných buněk zkopírovat někam jinam, stačí zadat adresu vyhodnocované buňky (A2) v příkazu value_if_true argument:

    =IF(ISNUMBER(SEARCH($E$1,A2)),A2,"")

    Níže uvedený snímek obrazovky ukazuje výsledky:

    Pokud buňka obsahuje určitý text: vzorec rozlišující velká a malá písmena

    V obou výše uvedených příkladech vzorce nerozlišují velká a malá písmena. V situacích, kdy pracujete s daty, která rozlišují malá a velká písmena, použijte místo funkce HLEDAT funkci FIND, abyste rozlišili velikost znaků.

    Například následující vzorec identifikuje pouze zakázky s velkým písmenem "A-" a ignoruje malá písmena "a-".

    =IF(ISNUMBER(FIND("A-",A2)), "Platné",")

    Pokud buňka obsahuje jeden z mnoha textových řetězců (logika OR)

    Chcete-li identifikovat buňky obsahující alespoň jednu z mnoha hledaných věcí, použijte jeden z následujících vzorců.

    Nejjednodušší by bylo zkontrolovat každý podřetězec zvlášť a nechat funkci OR vrátit v logickém testu vzorce IF hodnotu TRUE, pokud je nalezen alespoň jeden podřetězec:

    IF(OR(ISNUMBER(SEARCH(" string1 ", buňka )), ISNUMBER(SEARCH(" string2 ", buňka ))), value_to_return , "")

    Předpokládejme, že máte ve sloupci A seznam SKU a chcete najít ty, které obsahují buď "šaty", nebo "sukně". Můžete to provést pomocí tohoto vzorce:

    =IF(OR(ISNUMBER(SEARCH("šaty",A2)),ISNUMBER(SEARCH("sukně",A2))), "Platí ","")

    Tento vzorec funguje docela dobře pro několik položek, ale rozhodně to není správná cesta, pokud chcete kontrolovat mnoho věcí. V tomto případě by bylo lepší použít funkci SUMPRODUCT, jak je uvedeno v dalším příkladu.

    Pokud pracujete s více textovými řetězci, hledání každého řetězce zvlášť by váš vzorec příliš prodloužilo a ztížilo jeho čtení. Elegantnějším řešením by bylo vložit kombinaci ISNUMBER SEARCH do funkce SUMPRODUCT a zjistit, zda je výsledek větší než nula:

    SUMPRODUCT(--ISNUMBER(SEARCH( struny , buňka )))>0

    Chcete-li například zjistit, zda A2 obsahuje některé ze slov zadaných v buňkách D2:D4, použijte tento vzorec:

    =SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0

    Můžete také vytvořit pojmenovaný rozsah obsahující řetězce, které chcete vyhledat, nebo zadat slova přímo do vzorce:

    =SUMPRODUCT(--ISNUMBER(SEARCH({"šaty", "sukně", "džíny"},A2)))>0

    V každém případě bude výsledek podobný tomuto:

    Aby byl výstup uživatelsky přívětivější, můžete výše uvedený vzorec vložit do funkce IF a místo hodnot TRUE/FALSE vrátit vlastní text:

    =IF(SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0, "Valid", "")

    Jak tento vzorec funguje

    V jádru se používá ISNUMBER spolu s SEARCH, jak bylo vysvětleno v předchozím příkladu. V tomto případě jsou výsledky hledání reprezentovány ve formě pole jako {TRUE;FALSE;FALSE}. Pokud buňka obsahuje alespoň jeden ze zadaných podřetězců, bude v poli TRUE. Dvojitý unární operátor (--) vynutí hodnoty TRUE / FALSE na 1, resp. 0, a poskytne pole jako např.{1;0;0}. Nakonec funkce SUMPRODUCT sečte čísla a my vybereme buňky, kde je výsledek větší než nula.

    Pokud buňka obsahuje několik řetězců (logika AND)

    V situacích, kdy chcete najít buňky obsahující všechny zadané textové řetězce, použijte již známou kombinaci ISNUMBER SEARCH spolu s IF AND:

    IF(AND(ISNUMBER(SEARCH(" string1 ", buňka )), ISNUMBER(SEARCH(" string2 ", buňka ))), value_to_return ,"")

    Pomocí tohoto vzorce můžete například vyhledat SKU obsahující slova "dress" a "blue":

    =IF(AND(ISNUMBER(HLEDAT("šaty",A2)),ISNUMBER(HLEDAT("modré",A2))), "Platí ","")

    Nebo můžete řetězce zadat do samostatných buněk a odkazovat na ně ve vzorci:

    =IF(AND(ISNUMBER(SEARCH($D$2,A2)),ISNUMBER(SEARCH($E$2,A2)), "Platí ","")

    Alternativním řešením je spočítat výskyty jednotlivých řetězců a zkontrolovat, zda je každý z nich větší než nula:

    =IF(AND(COUNTIF(A2, "*dress*")>0,COUNTIF(A2, "*blue*")>0), "Valid","")

    Výsledek bude přesně takový, jak je znázorněno na obrázku výše.

    Jak vrátit různé výsledky na základě hodnoty buňky

    Pokud chcete porovnat každou buňku v cílovém sloupci s jiným seznamem položek a pro každou shodu vrátit jinou hodnotu, použijte jeden z následujících přístupů.

    Vnořené IF

    Logika vnořeného vzorce IF je jednoduchá: každou podmínku testujete samostatnou funkcí IF a v závislosti na výsledcích těchto testů vracíte různé hodnoty.

    IF( buňka =" lookup_text1 ", " vrátit _ text1 ", IF( buňka =" lookup_text2 ", " vrátit _ text2 ", IF( buňka =" lookup_text3 ", " vrátit _ text3 ", "")))

    Předpokládejme, že máte seznam položek ve sloupci A a chcete mít jejich zkratky ve sloupci B. K tomu použijte následující vzorec:

    =IF(A2="jablko", "Ap", IF(A2="avokádo", "Av", IF(A2="banán", "B", IF(A2="citron", "L", ""))))

    Podrobné informace o syntaxi a logice vnořeného IF naleznete v části Excel vnořený IF - více podmínek v jednom vzorci.

    Vyhledávací vzorec

    Pokud hledáte kompaktnější a srozumitelnější vzorec, použijte funkci LOOKUP s vyhledávacími a návratovými hodnotami zadanými jako konstanty vertikálního pole:

    LOOKUP( buňka , {" lookup_text1 ";" lookup_text2 ";" lookup_text3 ";...}, {" vrátit _ text1 ";" vrátit _ text2 ";" vrátit _ text3 ";...})

    Chcete-li dosáhnout přesných výsledků, nezapomeňte uvést hodnoty vyhledávání v položce abecední pořadí , od A do Z.

    =LOOKUP(A2,{"apple";"avocado";"banana";"lemon"},{"Ap";"Av";"B";"L"})

    Oproti vnořeným IF má vzorec Lookup ještě jednu výhodu - rozumí funkci zástupné znaky a může tak identifikovat částečné shody.

    Pokud například sloupec A obsahuje několik druhů banánů, můžete vyhledat "*banán*" a nechat si vrátit stejnou zkratku ("B") pro všechny takové buňky:

    =LOOKUP(A2,{"apple";"avocado";"*banana*";"lemon"},{"Ap";"Av";"B";"L"})

    Další informace naleznete v části Vyhledávací vzorec jako alternativa k vnořeným IF.

    Vzorec Vlookup

    Při práci se sadou proměnných dat může být výhodnější zadat seznam shod v samostatných buňkách a získat je pomocí vzorce Vlookup, např.:

    =VLOOKUP(A2, $D$2:$E$5, 2,FALSE )

    Další informace naleznete v části Výukový program Excel VLOOKUP pro začátečníky.

    Tímto způsobem můžete v aplikaci Excel zkontrolovat, zda buňka obsahuje nějakou hodnotu nebo konkrétní text. Příští týden budeme pokračovat v probírání vzorců aplikace Excel s funkcí Pokud buňka obsahuje a naučíme se počítat nebo sčítat příslušné buňky, kopírovat nebo odstraňovat celé řádky obsahující tyto buňky a další funkce.

    Cvičebnice

    Excel Pokud buňka obsahuje - příklady vzorců (.xlsx soubor)

    Michael Brown je oddaný technologický nadšenec s vášní pro zjednodušování složitých procesů pomocí softwarových nástrojů. S více než desetiletými zkušenostmi v technologickém průmyslu zdokonalil své dovednosti v aplikacích Microsoft Excel a Outlook a také v Tabulkách a Dokumentech Google. Michaelův blog je věnován sdílení jeho znalostí a odborných znalostí s ostatními a poskytuje snadno pochopitelné tipy a návody pro zlepšení produktivity a efektivity. Ať už jste zkušený profesionál nebo začátečník, Michaelův blog nabízí cenné postřehy a praktické rady, jak tyto základní softwarové nástroje co nejlépe využít.