Príkaz IF programu Excel pre čiastočnú zhodu textu (zástupný znak)

  • Zdieľajte To
Michael Brown

Snažíte sa zostaviť príkaz IF s textom so zástupnými znakmi, ale zakaždým sa vám to nepodarí? Problém nie je vo vašom vzorci, ale v samotnej funkcii - Excel IF nepodporuje zástupné znaky. Existuje však spôsob, ako ju prinútiť fungovať pre čiastočnú zhodu textu, a tento návod vás naučí, ako na to.

Vždy, keď chcete v programe Excel vykonať čiastočné alebo rozmazané porovnávanie, najzrejmejším riešením je použitie zástupných znakov. Ale čo ak konkrétna funkcia, ktorú potrebujete použiť, nepodporuje zástupné znaky? Žiaľ, jednou z takýchto funkcií je aj excelovská funkcia IF. Je to obzvlášť nepríjemné, ak vezmeme do úvahy, že iné "podmienené" funkcie, ako napríklad COUNTIF, SUMIF a AVERAGEIFS, pracujú so zástupnými znakmi dokonale.

Našťastie to nie je prekážka, ktorá môže zastaviť kreatívneho používateľa Excelu :) Kombináciou IF s inými funkciami ho môžete prinútiť vyhodnotiť čiastočnú zhodu a získať peknú alternatívu k excelovskému vzorcu IF s náhradným znakom.

    Prečo nefunguje funkcia Excel IF so zástupným znakom

    Predpokladajme, že v nasledujúcej vzorovej tabuľke chcete skontrolovať, či ID v prvom stĺpci obsahujú písmeno "A". Ak sa nájdu - v stĺpci B sa zobrazí "Áno", ak nie - zobrazí sa "Nie".

    Zdá sa, že jednoduchým riešením by bolo zahrnutie textu so zástupnými znakmi do logického testu:

    =IF(A2="*a*", "Áno", "Nie")

    Žiaľ, nefunguje to. Vzorec vráti "Nie" pre všetky bunky, dokonca aj pre tie, ktoré obsahujú "A":

    Prečo zlyháva príkaz IF so zástupným znakom? Podľa všetkého Excel nerozoznáva zástupné znaky použité so znamienkom rovnosti alebo inými logickými operátormi. Ak sa bližšie pozriete na zoznam funkcií podporujúcich zástupné znaky, zistíte, že ich syntax predpokladá, že text so zástupným znakom sa objaví priamo v argumente, ako je to v tomto prípade:

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

    Excel IF obsahuje čiastočný text

    Teraz, keď už poznáte dôvod, prečo vzorec IF so zástupnými znakmi zlyháva, skúsme zistiť, ako ho prinútiť fungovať. Na tento účel jednoducho vložíme do logického testu IF funkciu, ktorá akceptuje zástupné znaky, konkrétne funkciu COUNTIF:

    IF(COUNTIF( bunka , "* text *"), value_if_true, value_if_false)

    Pri tomto prístupe IF nemá problém s pochopením zástupných znakov a bezchybne identifikuje bunky, ktoré obsahujú buď "A", alebo "a" (keďže COUNTIF nerozlišuje veľké a malé písmená):

    =IF(COUNTIF(A2, "*a*"), "Áno", "Nie")

    Tento vzorec sa prenesie do bunky B2 alebo akejkoľvek inej bunky v riadku 2 a potom ho môžete pretiahnuť do ľubovoľného počtu buniek:

    Toto riešenie možno použiť aj na lokalizáciu reťazce určitého vzoru . Za predpokladu, že sú platné iba ID pozostávajúce z 2 skupín po 2 znakoch oddelených pomlčkou, môžete na ich identifikáciu použiť reťazec "??-??":

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

    Ako tento vzorec funguje:

    Na logický test IF použijeme funkciu COUNTIF, ktorá spočíta počet buniek vyhovujúcich zadanému zástupnému reťazcu. Keďže rozsah kritérií je jedna bunka (A2), výsledok je vždy 1 (zhoda sa našla) alebo 0 (zhoda sa nenašla). Vzhľadom na to, že 1 sa rovná TRUE a 0 FALSE, vzorec vráti "Platné" (hodnota_if_true), keď je počet 1, a prázdny reťazec (hodnota_if_false), keď jepočet je 0.

    Vzorec IF ISNUMBER SEARCH pre čiastočné zhody

    Ďalším spôsobom, ako prinútiť aplikáciu Excel IF, aby fungovala pre čiastočnú zhodu textu, je zahrnúť do logického testu funkciu FIND alebo SEARCH. Rozdiel je v tom, že FIND rozlišuje veľké a malé písmená, zatiaľ čo SEARCH nie.

    V závislosti od toho, či chcete malé a veľké písmená považovať za rovnaké alebo odlišné znaky, bude fungovať jeden z týchto vzorcov:

    Rozlišovanie veľkých a malých písmen vzorec pre čiastočnú zhodu:

    IF(ISNUMBER(SEARCH(" text ", bunka )), value_if_true, value_if_false)

    Rozlišovanie veľkých a malých písmen vzorec pre čiastočnú zhodu:

    IF(ISNUMBER(FIND(" text ", bunka )), value_if_true, value_if_false)

    Keďže obe funkcie sú navrhnuté tak, aby vykonali zhodu typu "bunka obsahuje", zástupné znaky nie sú v tomto prípade potrebné.

    Napríklad na zistenie ID obsahujúcich "A" alebo "a" sa použije vzorec:

    =IF(ISNUMBER(SEARCH("A", A2)), "Áno", "Nie")

    Ak chcete hľadať iba veľké písmeno "A" a ignorovať písmeno "a", vzorec je:

    =IF(ISNUMBER(FIND("A", A2)), "Áno", "Nie")

    Na obrázku B6 nižšie môžete pozorovať rozdiel vo výsledku:

    Ako tento vzorec funguje:

    Základom vzorca je kombinácia ISNUMBER a SEARCH (alebo FIND):

    ISNUMBER(SEARCH("A", A2))

    Funkcia SEARCH hľadá zadaný text ("A" v tomto príklade) a vráti jeho pozíciu v reťazci v A2. Ak sa text nenájde, vráti sa chyba #VALUE. Keďže funkcie SEARCH aj FIND sú navrhnuté tak, aby vykonávali zhodu typu "bunka obsahuje", zástupné znaky nie sú v tomto prípade potrebné.

    Funkcia ISNUMBER prevedie číslo na TRUE a akúkoľvek inú hodnotu vrátane chyby na FALSE. Logická hodnota sa priamo prenesie do logického testu IF. V našom prípade A2 obsahuje "A", takže ISNUMBER vráti TRUE:

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

    Ako výsledok IF vráti hodnotu nastavenú pre value_if_true argument, ktorý je "Áno".

    Príkaz programu Excel IF OR so zástupnými znakmi

    Potrebujete identifikovať bunky, ktoré obsahujú jeden z textových reťazcov so zástupným znakom? V tomto prípade môžete skombinovať klasický príkaz IF OR s vyššie uvedeným vzorcom COUNTIF alebo ISNUMBER SEARCH.

    Ak chcete napríklad v A2 vyhľadať "aa" ALEBO "bb", pričom sa ignorujú veľké a malé písmená, a ak sa nájde jedno z nich, vráťte "Áno", použite jeden z týchto vzorcov:

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

    alebo

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

    Funguje aj sčítanie dvoch funkcií COUNTIF. V tomto prípade funguje znamienko plus ako operátor OR:

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

    Namiesto pevného zakódovania reťazcov so zástupnými znakmi do vzorca ich môžete zadať do samostatných buniek, napríklad D2 a F2, ako je znázornené na nasledujúcej snímke obrazovky. Všimnite si, že tieto odkazy na bunky sú uzamknuté znakom $, aby sa vzorec správne skopíroval do nasledujúcich buniek:

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

    Vyššie uvedené vzorce fungujú dobre pre 2 čiastočné zhody, ale ak hľadáte 3 alebo viac, boli by príliš zdĺhavé. V tomto prípade je rozumné pristupovať k úlohe inak:

    Funkcii SEARCH zadajte viacero podreťazcov v konštantnom poli, spočítajte vrátené čísla a skontrolujte, či je výsledok väčší ako nula (čo by znamenalo, že sa našiel aspoň jeden z podreťazcov):

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

    Takto dosiahnete presne rovnaký výsledok s kompaktnejším zložením:

    Vzorec programu Excel IF AND so zástupnými znakmi

    Ak chcete skontrolovať, či bunka obsahuje dva alebo viac rôznych podreťazcov, najjednoduchšie je použiť funkciu COUNTIFS so zástupnými znakmi pre logický test.

    Predpokladajme, že chcete nájsť bunky v stĺpci A, ktoré obsahujú "b" A "2". Ak to chcete urobiť, použite "*b*" a "*2*" pre kritériá COUNTIFS a A2 pre rozsah kritérií:

    =IF(COUNTIFS(A2, "*b*", A2, "*2*"), "Áno", "")

    Ďalším spôsobom je použitie vzorca IF AND spolu s ISNUMBER SEARCH:

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

    Aj keď v tomto vzorci neuvádzame žiadne zástupné znaky, funguje ako vyhľadávanie dvoch zástupných reťazcov ("*b*" a "*2*") v tej istej bunke.

    Samozrejme, nič vám nebráni zadať hľadané hodnoty do preddefinovaných buniek, v našom prípade D2 a F2, a do vzorca dodať odkazy na tieto bunky:

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

    Ak dávate prednosť používaniu kompaktnejších vzorcov všade tam, kde je to možné, potom sa vám možno bude viac páčiť prístup s konštantou poľa. Vzorec IF COUNT SEARCH je veľmi podobný ako v predchádzajúcom príklade, ale pretože tentoraz sa v A2 musia vyskytovať oba podreťazce, kontrolujeme, či je počet rovný 2:

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

    Toto sú hlavné spôsoby použitia zástupných znakov v príkaze IF v programe Excel. Ak poznáte aj iné riešenia, ostatní používatelia určite ocenia, ak sa o svoje skúsenosti podelíte v komentároch. Ďakujem za prečítanie a dúfam, že sa na našom blogu uvidíme aj budúci týždeň!

    Cvičebnica na stiahnutie

    Príklady vzorcov Excel IF so zástupnými znakmi (.xlsx súbor)

    Michael Brown je nadšený technologický nadšenec s vášňou pre zjednodušovanie zložitých procesov pomocou softvérových nástrojov. S viac ako desaťročnými skúsenosťami v technologickom priemysle si zdokonalil svoje zručnosti v programoch Microsoft Excel a Outlook, ako aj Tabuľky Google a Dokumenty. Michaelov blog je venovaný zdieľaniu svojich vedomostí a odborných znalostí s ostatnými a poskytuje jednoduché tipy a návody na zlepšenie produktivity a efektivity. Či už ste skúsený profesionál alebo začiatočník, Michaelov blog ponúka cenné poznatky a praktické rady, ako z týchto základných softvérových nástrojov vyťažiť maximum.