Excel: Ak bunka obsahuje príklady vzorcov

  • Zdieľajte To
Michael Brown

Učebnica obsahuje niekoľko príkladov vzorcov "Excel if contains", ktoré ukazujú, ako vrátiť niečo v inom stĺpci, ak cieľová bunka obsahuje požadovanú hodnotu, ako vyhľadávať s čiastočnou zhodou a testovať viacero kritérií pomocou logiky OR aj AND.

Jednou z najčastejších úloh v programe Excel je kontrola, či bunka obsahuje hodnotu, ktorá vás zaujíma. Aká hodnota to môže byť? Len akýkoľvek text alebo číslo, konkrétny text alebo vôbec akákoľvek hodnota (nie prázdna bunka).

V programe Excel existuje niekoľko variantov vzorca "Ak bunka obsahuje" v závislosti od toho, aké hodnoty chcete presne zistiť. Vo všeobecnosti použijete funkciu IF na vykonanie logického testu a vrátenie jednej hodnoty, keď je podmienka splnená (bunka obsahuje), a/alebo inej hodnoty, keď podmienka splnená nie je (bunka neobsahuje). Nižšie uvedené príklady zahŕňajú najčastejšie scenáre.

    Ak bunka obsahuje akúkoľvek hodnotu, potom

    Na začiatok sa pozrieme, ako nájsť bunky, ktoré obsahujú čokoľvek: akýkoľvek text, číslo alebo dátum. Na tento účel použijeme jednoduchý vzorec IF, ktorý kontroluje, či nie sú bunky prázdne.

    IF( bunka "", value_to_return , "")

    Ak chcete napríklad v stĺpci B vrátiť hodnotu "Nie je prázdne", ak bunka stĺpca A v tom istom riadku obsahuje akúkoľvek hodnotu, zadajte do bunky B2 nasledujúci vzorec a potom dvakrát kliknite na malý zelený štvorček v pravom dolnom rohu, aby ste vzorec skopírovali do stĺpca:

    =IF(A2"", "Nie je prázdne", "")

    Výsledok bude vyzerať podobne:

    Ak bunka obsahuje text, potom

    Ak chcete nájsť len bunky s textovými hodnotami bez čísel a dátumov, použite IF v kombinácii s funkciou ISTEXT. Tu je všeobecný vzorec na vrátenie určitej hodnoty v inej bunke, ak cieľová bunka obsahuje akýkoľvek text :

    IF(ISTEXT( bunka ), value_to_return , "")

    Predpokladajme, že chcete do stĺpca B vložiť slovo "áno", ak bunka v stĺpci A obsahuje text. Ak to chcete urobiť, vložte do bunky B2 nasledujúci vzorec:

    =IF(ISTEXT(A2), "Áno", "")

    Ak bunka obsahuje číslo, potom

    Podobným spôsobom môžete identifikovať bunky s číselnými hodnotami (čísla a dátumy). Na tento účel použite funkciu IF spolu s funkciou ISNUMBER:

    IF(ISNUMBER( bunka ), value_to_return , "")

    Nasledujúci vzorec vráti "áno" v stĺpci B, ak zodpovedajúca bunka v stĺpci A obsahuje akékoľvek číslo:

    =IF(ISNUMBER(A2), "Áno", "")

    Ak bunka obsahuje konkrétny text

    Vyhľadávanie buniek obsahujúcich určitý text (alebo čísla či dátumy) je jednoduché. Napíšete regulárny vzorec IF, ktorý skontroluje, či cieľová bunka obsahuje požadovaný text, a text, ktorý sa má vrátiť, zadáte do políčka value_if_true argument.

    IF( bunka =" text ", value_to_return , "")

    Ak chcete napríklad zistiť, či bunka A2 obsahuje "jablká", použite tento vzorec:

    =IF(A2="jablká", "Áno", "")

    Ak bunka neobsahuje konkrétny text

    Ak hľadáte opačný výsledok, t. j. vrátiť nejakú hodnotu do iného stĺpca, ak cieľová bunka neobsahuje zadaný text ("jablká"), potom vykonajte jednu z nasledujúcich možností.

    Zadajte prázdny reťazec ("") do value_if_true a text, ktorý sa má vrátiť v value_if_false argument:

    =IF(A2="jablká", "", "Nie jablká")

    Alebo vložte operátor "not equal to" do logical_test a text, ktorý sa má vrátiť v value_if_true:

    =IF(A2 "jablká", "Nie jablká", "")

    Tak či onak, vzorec poskytne tento výsledok:

    Ak bunka obsahuje text: vzorec rozlišujúci malé a veľké písmená

    Ak chcete prinútiť vzorec rozlišovať medzi veľkými a malými písmenami, použite funkciu EXACT, ktorá kontroluje, či sú dva textové reťazce presne rovnaké vrátane veľkosti písmen:

    =IF(EXACT(A2, "APPLES"), "Áno", "")

    Môžete tiež zadať textový reťazec modelu do niektorej bunky (napríklad do bunky C1), opraviť odkaz na bunku pomocou znaku $ ($C$1) a porovnať cieľovú bunku s touto bunkou:

    =IF(EXACT(A2,$C$1), "Áno", "")

    Ak bunka obsahuje konkrétny textový reťazec (čiastočná zhoda)

    Skončili sme s triviálnymi úlohami a prechádzame k náročnejším a zaujímavejším :) V tomto príklade sú potrebné tri rôzne funkcie na zistenie, či je daný znak alebo podreťazec súčasťou obsahu bunky:

    IF(ISNUMBER(SEARCH(" text" , bunka )), value_to_return ,"")

    Tento vzorec funguje zvnútra von:

    • Funkcia SEARCH vyhľadá textový reťazec, a ak ho nájde, vráti pozíciu prvého znaku, v opačnom prípade vráti chybu #VALUE!.
    • Funkcia ISNUMBER skontroluje, či vyhľadanie SEARCH bolo úspešné alebo neúspešné. Ak vyhľadanie SEARCH vrátilo akékoľvek číslo, funkcia ISNUMBER vráti TRUE. Ak vyhľadanie SEARCH skončilo chybou, funkcia ISNUMBER vráti FALSE.
    • Nakoniec funkcia IF vráti zadanú hodnotu pre bunky, ktoré majú v logickom teste hodnotu TRUE, inak prázdny reťazec ("").

    A teraz sa pozrime, ako tento všeobecný vzorec funguje v reálnych pracovných listoch.

    Ak bunka obsahuje určitý text, vložte hodnotu do inej bunky

    Predpokladajme, že máte zoznam objednávok v stĺpci A a chcete nájsť objednávky s konkrétnym identifikátorom, povedzme "A-". Úlohu môžete splniť pomocou tohto vzorca:

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

    Namiesto pevného zakódovania reťazca do vzorca ho môžete zadať do samostatnej bunky (E1) a odkazovať na ňu vo vzorci:

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

    Aby vzorec fungoval správne, nezabudnite uzamknúť adresu bunky obsahujúcej reťazec so znakom $ (absolútny odkaz na bunku).

    Ak bunka obsahuje konkrétny text, skopírujte ho do iného stĺpca

    Ak chcete skopírovať obsah platných buniek niekam inam, jednoducho zadajte adresu vyhodnocovanej bunky (A2) v príkaze value_if_true argument:

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

    Na nasledujúcom obrázku sú zobrazené výsledky:

    Ak bunka obsahuje konkrétny text: vzorec rozlišujúci malé a veľké písmená

    V oboch uvedených príkladoch vzorce nerozlišujú veľké a malé písmená. V situáciách, keď pracujete s údajmi, ktoré rozlišujú veľké a malé písmená, použite na rozlíšenie veľkosti znakov funkciu FIND namiesto funkcie SEARCH.

    Napríklad nasledujúci vzorec identifikuje len objednávky s veľkým písmenom "A-", pričom malé písmená "a-" ignoruje.

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

    Ak bunka obsahuje jeden z mnohých textových reťazcov (logika OR)

    Ak chcete identifikovať bunky obsahujúce aspoň jednu z mnohých hľadaných vecí, použite jeden z nasledujúcich vzorcov.

    Najzrejmejším prístupom by bolo skontrolovať každý podreťazec samostatne a funkcia OR by v logickom teste vzorca IF vrátila TRUE, ak sa nájde aspoň jeden podreťazec:

    IF(OR(ISNUMBER(SEARCH(" reťazec1 ", bunka )), ISNUMBER(SEARCH(" reťazec2 ", bunka ))), value_to_return , "")

    Predpokladajme, že máte zoznam SKU v stĺpci A a chcete nájsť tie, ktoré obsahujú buď "šaty" alebo "sukňa". Môžete to urobiť pomocou tohto vzorca:

    =IF(OR(ISNUMBER(SEARCH("šaty",A2)),ISNUMBER(SEARCH("sukňa",A2))), "Platí ","")

    Tento vzorec funguje celkom dobre pre niekoľko položiek, ale určite to nie je správna cesta, ak chcete kontrolovať veľa vecí. V tomto prípade by bolo lepšie použiť funkciu SUMPRODUCT, ako je uvedené v ďalšom príklade.

    Ak pracujete s viacerými textovými reťazcami, vyhľadávanie každého reťazca osobitne by váš vzorec príliš predĺžilo a sťažilo by jeho čítanie. Elegantnejším riešením by bolo vloženie kombinácie ISNUMBER SEARCH do funkcie SUMPRODUCT a zistenie, či je výsledok väčší ako nula:

    SUMPRODUCT(--ISNUMBER(SEARCH( reťazce , bunka )))>0

    Ak chcete napríklad zistiť, či A2 obsahuje niektoré zo slov zadaných v bunkách D2:D4, použite tento vzorec:

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

    Prípadne môžete vytvoriť pomenovaný rozsah obsahujúci reťazce, ktoré sa majú vyhľadať, alebo môžete slová zadať priamo do vzorca:

    =SUMPRODUCT(--ISNUMBER(SEARCH({"šaty", "sukňa", "džínsy"},A2)))>0

    V každom prípade bude výsledok podobný tomuto:

    Aby bol výstup užívateľsky prívetivejší, môžete vyššie uvedený vzorec vložiť do funkcie IF a namiesto hodnôt TRUE/FALSE vrátiť vlastný text:

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

    Ako tento vzorec funguje

    V jadre používate ISNUMBER spolu so SEARCH, ako bolo vysvetlené v predchádzajúcom príklade. V tomto prípade sú výsledky vyhľadávania reprezentované vo forme poľa ako {TRUE;FALSE;FALSE}. Ak bunka obsahuje aspoň jeden zo zadaných podreťazcov, v poli bude TRUE. Dvojitý unárny operátor (--) vynúti hodnoty TRUE / FALSE na 1, resp. 0 a poskytne pole ako{1;0;0}. Nakoniec funkcia SUMPRODUCT sčíta čísla a vyberieme bunky, v ktorých je výsledok väčší ako nula.

    Ak bunka obsahuje niekoľko reťazcov (logika AND)

    V situáciách, keď chcete nájsť bunky obsahujúce všetky zadané textové reťazce, použite už známu kombináciu ISNUMBER SEARCH spolu s IF AND:

    IF(AND(ISNUMBER(SEARCH(" reťazec1 ", bunka )), ISNUMBER(SEARCH(" reťazec2 ", bunka ))), value_to_return ,"")

    Pomocou tohto vzorca môžete napríklad nájsť SKU obsahujúce slová "dress" a "blue":

    =IF(AND(ISNUMBER(SEARCH("dress",A2)),ISNUMBER(SEARCH("blue",A2))), "Valid ","")

    Alebo môžete reťazce napísať do samostatných buniek a odkazovať na ne vo vzorci:

    =IF(AND(ISNUMBER(SEARCH($D$2,A2)),ISNUMBER(SEARCH($E$2,A2)), "Platné ","")

    Alternatívnym riešením je spočítať výskyty jednotlivých reťazcov a skontrolovať, či je každý počet väčší ako nula:

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

    Výsledok bude presne taký, ako je zobrazený na obrázku vyššie.

    Ako vrátiť rôzne výsledky na základe hodnoty bunky

    V prípade, že chcete porovnať každú bunku v cieľovom stĺpci s iným zoznamom položiek a pre každú zhodu vrátiť inú hodnotu, použite jeden z nasledujúcich prístupov.

    Vnorené IF

    Logika vnoreného vzorca IF je jednoduchá: na testovanie každej podmienky použijete samostatnú funkciu IF a v závislosti od výsledkov týchto testov vrátite rôzne hodnoty.

    IF( bunka =" lookup_text1 ", " vrátiť _ text1 ", IF( bunka =" lookup_text2 ", " vrátiť _ text2 ", IF( bunka =" lookup_text3 ", " vrátiť _ text3 ", "")))

    Predpokladajme, že máte zoznam položiek v stĺpci A a chcete mať ich skratky v stĺpci B. Na to použite nasledujúci vzorec:

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

    Podrobné informácie o syntaxi a logike vnoreného IF nájdete v časti Excel vnorený IF - viacero podmienok v jednom vzorci.

    Vyhľadávací vzorec

    Ak hľadáte kompaktnejší a zrozumiteľnejší vzorec, použite funkciu LOOKUP s vyhľadávacími a návratovými hodnotami zadanými ako konštanty vertikálneho poľa:

    LOOKUP( bunka , {" lookup_text1 ";" lookup_text2 ";" lookup_text3 ";...}, {" vrátiť _ text1 ";" vrátiť _ text2 ";" vrátiť _ text3 ";...})

    Ak chcete získať presné výsledky, nezabudnite uviesť hodnoty vyhľadávania v abecedné poradie , od A po Z.

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

    V porovnaní s vnorenými IF má vzorec Lookup ešte jednu výhodu - rozumie zástupné znaky a preto môže identifikovať čiastočné zhody.

    Ak napríklad stĺpec A obsahuje niekoľko druhov banánov, môžete vyhľadať "*banán*" a pre všetky takéto bunky sa vráti rovnaká skratka ("B"):

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

    Viac informácií nájdete v časti Vyhľadávací vzorec ako alternatíva k vnoreným IF.

    Vzorec Vlookup

    Pri práci so súborom premenlivých údajov môže byť pohodlnejšie zadať zoznam zhody do samostatných buniek a získať ich pomocou vzorca Vlookup, napr:

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

    Viac informácií nájdete v časti Excel VLOOKUP tutoriál pre začiatočníkov.

    Takto v programe Excel skontrolujete, či bunka obsahuje nejakú hodnotu alebo konkrétny text. Budúci týždeň budeme pokračovať v skúmaní vzorcov programu Excel s názvom Ak bunka obsahuje a naučíme sa počítať alebo sčítavať príslušné bunky, kopírovať alebo odstraňovať celé riadky obsahujúce tieto bunky a ďalšie funkcie.

    Cvičný zošit

    Excel Ak bunka obsahuje - príklady vzorcov (.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.