Příkaz IF aplikace Excel pro částečnou shodu textu (zástupný znak)

  • Sdílet Toto
Michael Brown

Snažíte se sestavit příkaz IF se zástupnými znaky, ale pokaždé se vám to nepodaří? Problém není ve vašem vzorci, ale v samotné funkci - IF v Excelu nepodporuje zástupné znaky. Existuje však způsob, jak ji zprovoznit pro částečnou shodu textu, a tento návod vás naučí, jak na to.

Kdykoli chcete v Excelu provést částečné nebo rozmazané porovnání, je nejzřejmějším řešením použití zástupných znaků. Co když ale konkrétní funkce, kterou potřebujete použít, zástupné znaky nepodporuje? Bohužel, jednou z takových funkcí je i excelovská funkce IF. To je obzvlášť zklamáním, když uvážíme, že jiné "podmíněné" funkce, jako jsou COUNTIF, SUMIF a AVERAGEIFS, pracují se zástupnými znaky naprosto bez problémů.

Naštěstí to není překážka, která by mohla kreativního uživatele Excelu zastavit :) Kombinací IF s dalšími funkcemi jej můžete přinutit vyhodnotit částečnou shodu a získat tak pěknou alternativu k excelovskému vzorci IF s divokými znaky.

    Proč nefunguje funkce IF aplikace Excel se zástupným znakem

    Předpokládejme, že v ukázkové tabulce níže chcete zkontrolovat, zda ID v prvním sloupci obsahují písmeno "A". Pokud je nalezeno - zobrazte ve sloupci B "Ano", pokud ne - zobrazte "Ne".

    Zdá se, že zahrnutí zástupných znaků do logického testu by bylo snadným řešením:

    =IF(A2="*a*", "Ano", "Ne")

    Vzorec bohužel nefunguje. Vrátí "Ne" pro všechny buňky, dokonce i pro ty, které obsahují "A":

    Proč příkaz IF se zástupným znakem selže? Podle všeho Excel nerozpoznává zástupné znaky použité se znaménkem rovnosti nebo jinými logickými operátory. Při bližším pohledu na seznam funkcí podporujících zástupné znaky zjistíte, že jejich syntaxe předpokládá, že se text se zástupným znakem objeví přímo v argumentu, jako je tento:

    =COUNTIF(A2:A10, "*a*")

    Excel IF obsahuje částečný text

    Nyní, když už víte, proč vzorec IF se zástupnými znaky selhává, zkusíme zjistit, jak jej zprovoznit. Za tímto účelem jednoduše vložíme do logického testu IF funkci, která zástupné znaky akceptuje, a to funkci COUNTIF:

    IF(COUNTIF( buňka , "* text *"), value_if_true, value_if_false)

    Při tomto přístupu nemá IF problém s pochopením zástupných znaků a bezchybně identifikuje buňky, které obsahují buď "A", nebo "a" (protože COUNTIF nerozlišuje velká a malá písmena):

    =IF(COUNTIF(A2, "*a*"), "Ano", "Ne")

    Tento vzorec přejde do buňky B2 nebo do jakékoli jiné buňky v řádku 2 a pak jej můžete přetáhnout dolů do libovolného počtu buněk:

    Toto řešení lze použít také k vyhledání řetězce určitého vzoru . Za předpokladu, že jsou platné pouze ID složené ze dvou skupin po dvou znacích oddělených pomlčkou, můžete k jejich identifikaci použít zástupný řetězec "??-??":

    =IF(COUNTIF(A2, "??-??"), "Platné", "")

    Jak tento vzorec funguje:

    Pro logický test IF použijeme funkci COUNTIF, která spočítá počet buněk odpovídajících zadanému zástupnému řetězci. Protože rozsah kritérií je jediná buňka (A2), výsledek je vždy 1 (shoda nalezena) nebo 0 (shoda nenalezena). Vzhledem k tomu, že 1 se rovná TRUE a 0 FALSE, vzorec vrátí "Platné" (hodnota_if_true), když je počet 1, a prázdný řetězec (hodnota_if_false), když je počet 1, nebo 0 (hodnota_if_false).počet je 0.

    IF ISNUMBER HLEDAT vzorec pro částečné shody

    Dalším způsobem, jak donutit Excel IF, aby fungoval pro částečnou shodu textu, je zahrnout do logického testu funkci FIND nebo SEARCH. Rozdíl je v tom, že FIND rozlišuje velká a malá písmena, zatímco SEARCH nikoli.

    V závislosti na tom, zda chcete malá a velká písmena považovat za stejné nebo různé znaky, bude jeden z těchto vzorců fungovat:

    Nerozlišování velkých a malých písmen vzorec pro částečnou shodu:

    IF(ISNUMBER(SEARCH(" text ", buňka )), value_if_true, value_if_false)

    Rozlišování velkých a malých písmen vzorec pro částečnou shodu:

    IF(ISNUMBER(FIND(" text ", buňka )), value_if_true, value_if_false)

    Vzhledem k tomu, že obě funkce jsou navrženy tak, aby prováděly shodu typu "buňka obsahuje", nejsou v tomto případě zástupné znaky nutné.

    Například pro detekci ID obsahujících "A" nebo "a" se použije vzorec:

    =IF(ISNUMBER(SEARCH("A", A2)), "Ano", "Ne")

    Chcete-li hledat pouze velké písmeno "A" a písmeno "a" ignorovat, použijte následující vzorec:

    =IF(ISNUMBER(FIND("A", A2)), "Ano", "Ne")

    Na obrázku B6 níže můžete pozorovat rozdíl ve výsledku:

    Jak tento vzorec funguje:

    Jádrem vzorce je kombinace ISNUMBER a SEARCH (nebo FIND):

    ISNUMBER(SEARCH("A", A2))

    Funkce HLEDAT vyhledá zadaný text ("A" v tomto příkladu) a vrátí jeho pozici v řetězci v A2. Pokud text není nalezen, je vrácena chyba #VALUE. Protože funkce HLEDAT i HLEDAT jsou navrženy tak, aby prováděly shodu typu "buňka obsahuje", nejsou v tomto případě zástupné znaky skutečně potřeba.

    Funkce ISNUMBER převede číslo na TRUE a jakoukoli jinou hodnotu včetně chyby na FALSE. Logická hodnota přejde přímo do logického testu IF. V našem případě A2 obsahuje "A", takže ISNUMBER vrátí TRUE:

    IF(TRUE, "Yes", "No")

    Jako výsledek IF vrací hodnotu nastavenou pro parametr value_if_true argument, který je "Ano".

    Příkaz IF OR aplikace Excel se zástupnými znaky

    Potřebujete identifikovat buňky, které obsahují některý z textových řetězců se zástupným znakem? V tomto případě můžete kombinovat klasický příkaz IF OR s výše uvedeným vzorcem COUNTIF nebo ISNUMBER SEARCH.

    Chcete-li například v A2 hledat "aa" NEBO "bb", přičemž se ignorují velká a malá písmena, a vrátit "Ano", pokud je nalezeno jedno z nich, použijte jeden z těchto vzorců:

    =IF(OR(ISNUMBER(SEARCH("aa", A2)), ISNUMBER(SEARCH("bb", A2)), "Yes", "")

    nebo

    =IF(OR(COUNTIF(A2, "*aa*"), COUNTIF(A2, "*bb*")), "Ano", "")

    Funguje také sčítání dvou funkcí COUNTIF. V tomto případě funguje znaménko plus jako operátor OR:

    =IF(COUNTIF(A3, "*aa*") + COUNTIF(A3, "*bb*"), "Ano", "")

    Místo toho, abyste ve vzorci natvrdo zadávali řetězce se zástupnými znaky, můžete je zadat do samostatných buněk, například D2 a F2, jak je znázorněno na obrázku níže. Všimněte si, že tyto odkazy na buňky jsou uzamčeny znakem $, aby se vzorec správně zkopíroval do níže uvedených buněk:

    =IF(OR(COUNTIF(A2, "*"&$D$2& "*"), COUNTIF(A2, "*"&$F$2& "*")), "Yes", "")

    Výše uvedené vzorce fungují dobře pro 2 částečné shody, ale pokud hledáte 3 nebo více, byly by příliš zdlouhavé. V takovém případě je rozumné přistupovat k úkolu jinak:

    Funkci SEARCH zadejte více podřetězců v konstantním poli, spočítejte vrácená čísla a zkontrolujte, zda je výsledek větší než nula (což by znamenalo, že byl nalezen alespoň jeden z podřetězců):

    =IF(COUNT(SEARCH({"aa", "bb"}, A2))>0, "Ano", "")

    Tímto způsobem dosáhnete stejného výsledku s kompaktnějším složením:

    Vzorec IF AND aplikace Excel se zástupnými znaky

    Pokud chcete zkontrolovat, zda buňka obsahuje dva nebo více různých podřetězců, je nejjednodušší použít funkci COUNTIFS se zástupnými znaky pro logický test.

    Předpokládejme, že chcete vyhledat buňky ve sloupci A, které obsahují "b" A "2". Chcete-li to provést, použijte pro kritéria COUNTIFS "*b*" a "*2*" a pro rozsah kritérií A2:

    =IF(COUNTIFS(A2, "*b*", A2, "*2*"), "Ano", "")

    Dalším způsobem je použití vzorce IF AND spolu s ISNUMBER SEARCH:

    =IF(AND(ISNUMBER(SEARCH("b", A2)), ISNUMBER(SEARCH("2", A2)), "Yes", "")

    Ačkoli do tohoto vzorce nezahrnujeme žádné zástupné znaky, funguje jako hledání dvou zástupných řetězců ("*b*" a "*2*") ve stejné buňce.

    Nic vám samozřejmě nebrání zadat hledané hodnoty do předem definovaných buněk, v našem případě D2 a F2, a do vzorce zadat odkazy na tyto buňky:

    =IF(AND(ISNUMBER(SEARCH($D$2, A2)), ISNUMBER(SEARCH($F$2, A2)), "Yes", "")

    Pokud dáváte přednost používání kompaktnějších vzorců všude tam, kde je to možné, pak se vám možná bude více líbit přístup s konstantou pole. Vzorec IF COUNT SEARCH je velmi podobný jako v předchozím příkladu, ale protože tentokrát se v A2 musí vyskytovat oba podřetězce, zkontrolujeme, zda je počet roven dvěma:

    =IF(COUNT(SEARCH({"b", "2"}, A2))=2, "Ano", "")

    Toto jsou hlavní způsoby použití zástupných znaků v příkazu IF v Excelu. Pokud znáte nějaké další řešení, ostatní uživatelé jistě ocení, pokud se podělíte o své zkušenosti v komentářích. Děkuji za přečtení a doufám, že se uvidíme na našem blogu příští týden!

    Cvičebnice ke stažení

    Příklady vzorců se zástupnými znaky v aplikaci Excel IF (.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.