Funkce Excel FIND a SEARCH s příklady vzorců

  • Sdílet Toto
Michael Brown

Výukový program vysvětluje syntaxi funkcí Excel FIND a SEARCH a uvádí příklady vzorců pro pokročilé netriviální použití.

V minulém článku jsme se zabývali základy dialogového okna Excelu Najít a nahradit. V mnoha situacích však můžete chtít, aby Excel na základě vašich kritérií automaticky našel a získal data z jiných buněk. Podívejme se tedy blíže na to, co funkce Excelu pro vyhledávání nabízejí.

    Funkce Excel FIND

    Funkce FIND v aplikaci Excel slouží k vrácení pozice určitého znaku nebo podřetězce v textovém řetězci.

    Syntaxe funkce Excel Find je následující:

    FIND(find_text, within_text, [start_num])

    První dva argumenty jsou povinné, poslední je nepovinný.

    • Find_text - znak nebo podřetězec, který chcete najít.
    • Within_text - textový řetězec, v němž se má hledat. Obvykle se zadává jako odkaz na buňku, ale řetězec můžete zadat i přímo do vzorce.
    • Start_num - nepovinný argument, který určuje, od kterého znaku má hledání začít. Pokud je vynechán, hledání začne od 1. znaku řetězce within_text.

    Pokud funkce FIND nenajde znak(y) find_text, je vrácena chyba #VALUE!.

    Například vzorec =FIND("d", "find") vrátí 4, protože "d" je čtvrté písmeno ve slově " najít ". Vzorec =FIND("a", "find") vrátí chybu, protože ve slově "" není žádné "a". najít ".

    Funkce Excel FIND - co si zapamatovat!

    Pro správné použití vzorce FIND v aplikaci Excel mějte na paměti následující jednoduché skutečnosti:

    1. Funkce FIND je rozlišování velkých a malých písmen . Pokud hledáte shodu bez rozlišení velkých a malých písmen, použijte funkci HLEDAT.
    2. Funkce FIND v aplikaci Excel neumožňuje použití zástupné znaky .
    3. Pokud argument find_text obsahuje několik znaků, funkce FIND vrátí pozici znaku. první znak Například vzorec FIND("ap", "happy") vrátí 2, protože "a" je 2. písmeno ve slově "happy".
    4. Pokud within_text obsahuje několik výskytů příkazu find_text se vrátí první výskyt. Například FIND("l", "hello") vrátí 3, což je pozice prvního znaku "l" ve slově "hello".
    5. Pokud je find_text prázdný řetězec "", vzorec Excel FIND vrátí první znak v hledaném řetězci.
    6. Funkce Excel FIND vrací #VALUE! chyba pokud nastane některá z následujících situací:
      • Find_text neexistuje v within_text.
      • Start_num obsahuje více znaků než within_text.
      • Start_num je 0 (nula) nebo záporné číslo.

    Funkce Excel HLEDAT

    Funkce HLEDAT v aplikaci Excel je velmi podobná funkci FIND, protože také vrací umístění podřetězce v textovém řetězci. Její syntaxe a argumenty jsou podobné jako u funkce FIND:

    SEARCH(find_text, within_text, [start_num])

    Na rozdíl od funkce FIND je funkce SEARCH rozlišování velkých a malých písmen a umožňuje použití zástupných znaků, jak ukazuje následující příklad.

    A zde je několik základních vzorců pro vyhledávání v aplikaci Excel:

    =SEARCH("market", "supermarket") vrátí 6, protože podřetězec "market" začíná na 6. znaku slova "supermarket".

    =SEARCH("e", "Excel") vrátí 1, protože "e" je prvním znakem slova "Excel", přičemž se ignoruje velikost písmen.

    Stejně jako funkce FIND vrací funkce SEARCH aplikace Excel chybu #VALUE!, pokud:

    • Hodnota argumentu find_text nebyla nalezena.
    • Argument start_num je větší než délka within_text.
    • Start_num je rovno nule nebo menší.

    Dále v tomto návodu najdete několik dalších smysluplných příkladů vzorců, které ukazují, jak používat funkci HLEDAT v listech aplikace Excel.

    Jak již bylo zmíněno, funkce FIND a SEARCH v aplikaci Excel jsou si syntaxí a použitím velmi podobné. Mají však několik rozdílů.

    1. Vyhledávání rozlišující malá a velká písmena vs. vyhledávání nerozlišující velká a malá písmena

    Nejzásadnější rozdíl mezi funkcemi Excelu HLEDAT a NAJÍT spočívá v tom, že funkce HLEDAT nerozlišuje velká a malá písmena, zatímco funkce NAJÍT rozlišuje velká a malá písmena.

    Například příkaz SEARCH("e", "Excel") vrátí 1, protože ignoruje velikost písmene "E", zatímco příkaz FIND("e", "Excel") vrátí 4, protože na velikost písmen pamatuje.

    2. Hledání pomocí zástupných znaků

    Na rozdíl od funkce FIND přijímá funkce Excel SEARCH v argumentu find_text zástupné znaky:

    • Otazník (?) odpovídá jednomu znaku a
    • Hvězdička (*) odpovídá libovolné sérii znaků.

    Chcete-li vidět, jak to funguje na skutečných datech, podívejte se na následující příklad:

    Jak vidíte na obrázku výše, vzorec SEARCH("function*2013", A2) vrátí pozici prvního znaku ("f") v podřetězci, pokud textový řetězec uvedený v argumentu within_text obsahuje jak "function", tak "2013", bez ohledu na to, kolik dalších znaků je mezi nimi.

    Tip: Chcete-li najít skutečný otazník (?) nebo hvězdičku (*), napište před příslušný znak tildu (~).

    Příklady vzorců FIND a SEARCH aplikace Excel

    V praxi se funkce FIND a SEARCH v aplikaci Excel používají samostatně jen zřídka. Obvykle se používají v kombinaci s dalšími funkcemi, jako jsou MID, LEFT nebo RIGHT, a následující příklady vzorců ukazují některá reálná použití.

    Příklad 1. Najděte řetězec předcházející nebo následující za daným znakem

    Tento příklad ukazuje, jak můžete najít a extrahovat všechny znaky v textovém řetězci nalevo nebo napravo od určitého znaku. Pro snazší pochopení uvažujte následující příklad.

    Předpokládejme, že máte sloupec jmen (sloupec A) a chcete vytáhnout Křestní jméno a Příjmení do samostatných sloupců.

    Chcete-li získat křestní jméno, můžete použít funkci FIND (nebo SEARCH) ve spojení s funkcí LEFT:

    =LEFT(A2, FIND(" ", A2)-1)

    nebo

    =LEFT(A2, SEARCH(" ", A2)-1)

    Jak asi víte, funkce LEFT aplikace Excel vrací zadaný počet znaků v řetězci nejvíce vlevo. A pomocí funkce FIND určíte pozici mezery (" "), aby funkce LEFT věděla, kolik znaků má extrahovat. Přitom od pozice mezery odečtete 1, protože nechcete, aby vrácená hodnota obsahovala mezeru.

    Pro získání příjmení použijte kombinaci funkcí RIGHT, FIND / SEARCH a LEN. Funkce LEN je potřebná pro získání celkového počtu znaků v řetězci, od kterého odečtete pozici mezery:

    =RIGHT(A2,LEN(A2)-FIND(" ",A2))

    nebo

    =RIGHT(A2,LEN(A2)-SEARCH(" ",A2))

    Následující snímek obrazovky ukazuje výsledek:

    Složitější scénáře, jako je extrakce druhého jména nebo rozdělení jmen s příponami, naleznete v části Jak rozdělit buňky v aplikaci Excel pomocí vzorců.

    Příklad 2. Najděte N-tý výskyt daného znaku v textovém řetězci

    Předpokládejme, že máte ve sloupci A nějaké textové řetězce, například seznam SKU, a chcete zjistit pozici řetězce. 2. pomlčka v řetězci. Následující vzorec funguje skvěle:

    =FIND("-", A2, FIND("-",A2)+1)

    První dva argumenty lze interpretovat snadno: vyhledejte pomlčku ("-") v buňce A2. Do třetího argumentu (start_num) vložíte další funkci FIND, která Excelu řekne, aby začal hledat od znaku, který následuje hned po prvním výskytu pomlčky (FIND("-",A2)+1).

    Vrácení polohy 3. výskyt , vložíte výše uvedený vzorec do argumentu start_num jiné funkce FIND a k vrácené hodnotě přičtete 2:

    =FIND("-",A2, FIND("-", A2, FIND("-",A2)+1) +2)

    Dalším a pravděpodobně jednodušším způsobem, jak najít N-tý výskyt daného znaku, je použití funkce Excel FIND v kombinaci s CHAR a SUBSTITUTE:

    =FIND(CHAR(1),SUBSTITUTE(A2,"-",CHAR(1),3))

    Kde "-" je příslušný znak a "3" je N-tý výskyt, který chcete najít.

    Ve výše uvedeném vzorci funkce SUBSTITUTE nahradí 3. výskyt pomlčky ("-") znakem CHAR(1), což je v systému ASCII netisknutelný znak "Začátek nadpisu". Místo znaku CHAR(1) můžete použít jakýkoli jiný netisknutelný znak od 1 do 31. A funkce FIND pak vrátí pozici tohoto znaku v textovém řetězci. Obecný vzorec je tedy následující:

    FIND(CHAR(1),SUBSTITUTE( buňka , znak ,CHAR(1), N-tý výskyt ))

    Na první pohled se může zdát, že výše uvedené vzorce nemají velkou praktickou hodnotu, ale následující příklad ukáže, jak užitečné jsou při řešení reálných úloh.

    Poznámka: Nezapomeňte, že funkce Excel FIND rozlišuje malá a velká písmena. V našem příkladu to nehraje roli, ale pokud pracujete s písmeny a chcete rozlišování velkých a malých písmen místo funkce FIND použijte funkci SEARCH.

    Příklad 3. Výpis N znaků následujících po určitém znaku

    Chcete-li v libovolném textovém řetězci vyhledat podřetězec dané délky, použijte funkci Excel FIND nebo Excel SEARCH v kombinaci s funkcí MID. Následující příklad ukazuje, jak lze tyto vzorce použít v praxi.

    Předpokládejme, že v našem seznamu SKU chcete najít první 3 znaky následující za první pomlčkou a vytáhnout je do jiného sloupce.

    Pokud by skupina znaků před první pomlčkou obsahovala vždy stejný počet položek (např. 2 znaky), jednalo by se o triviální úlohu. Pomocí funkce MID byste mohli vrátit 3 znaky z řetězce, počínaje pozicí 4 (s vynecháním prvních 2 znaků a pomlčky):

    =MID(A2, 4, 3)

    Přeloženo do češtiny, vzorec říká: "Podívejte se do buňky A2, začněte extrahovat od znaku 4 a vraťte 3 znaky".

    V reálných pracovních listech však může podřetězec, který potřebujete získat, začínat kdekoli v textovém řetězci. V našem příkladu nemusíte vědět, kolik znaků předchází první pomlčce. Chcete-li se s tímto problémem vypořádat, použijte funkci FIND k určení počátečního bodu podřetězce, který chcete získat.

    Vzorec FIND pro vrácení polohy 1. pomlčky je následující:

    =FIND("-",A2)

    Protože chcete začít znakem, který následuje po pomlčce, přičtěte k vrácené hodnotě 1 a vložte výše uvedenou funkci do druhého argumentu (start_num) funkce MID:

    =MID(A2, FIND("-",A2)+1, 3)

    V tomto případě funguje stejně dobře funkce HLEDAT aplikace Excel:

    =MID(A2, SEARCH("-",A2)+1, 3)

    To je skvělé, ale co když skupina znaků následující za první pomlčkou obsahuje jiný počet znaků? Hmm... to by mohl být problém:

    Jak vidíte na výše uvedeném snímku obrazovky, vzorec funguje dokonale pro řádky 1 a 2. V řádcích 4 a 5 obsahuje druhá skupina 4 znaky, ale vrátí se pouze první 3. V řádcích 6 a 7 jsou ve druhé skupině pouze 2 znaky, a proto náš vzorec pro vyhledávání v aplikaci Excel vrátí pomlčku, která následuje za nimi.

    Kdybyste se chtěli vrátit všechny znaky mezi 1. a 2. výskytem. určitého znaku (v tomto příkladu pomlčky), jak byste postupovali? Zde je odpověď:

    =MID(A2, FIND("-",A2)+1, FIND("-", A2, FIND("-",A2)+1) - FIND("-",A2)-1)

    Pro lepší pochopení tohoto vzorce MID prozkoumejme jeho argumenty jeden po druhém:

    • 1. argument (text). Je to textový řetězec obsahující znaky, které chcete extrahovat, v tomto příkladu buňka A2.
    • 2. argument (start_position). Určuje pozici prvního znaku, který chcete extrahovat. Pomocí funkce FIND vyhledáte první pomlčku v řetězci a k této hodnotě přičtete 1, protože chcete začít znakem, který následuje za pomlčkou: FIND("-",A2)+1.
    • 3. argument (num_chars). Určuje počet znaků, které chcete vrátit. V našem vzorci je to ta nejsložitější část. Použijete dvě funkce FIND (nebo SEARCH), jedna určí pozici první pomlčky: FIND("-",A2). A druhá vrátí pozici druhé pomlčky: FIND("-", A2, FIND("-",A2)+1). Pak od druhé odečtete první a pak odečtete 1, protože nechcete, aby se vrátila druhá pomlčka.aby zahrnoval obě pomlčky. Výsledkem bude počet znaků mezi 1. a 2. pomlčkou, což je přesně to, co hledáme. Tuto hodnotu tedy vložíte do argumentu num_chars funkce MID.

    Podobným způsobem můžete vrátit 3 znaky po 2. pomlčce:

    =MID(A2, FIND("-",A2, FIND("-", A2, FIND("-",A2)+1) +2), 3)

    Nebo vyjměte všechny znaky mezi 2. a 3. pomlčkou:

    =MID(A2, FIND("-", A2, FIND("-",A2)+1)+1, FIND("-",A2, FIND("-", A2, FIND("-",A2)+1) +2) - FIND("-", A2, FIND("-",A2)+1)-1)

    Příklad 4. Vyhledání textu mezi závorkami

    Předpokládejme, že máte ve sloupci A nějaký dlouhý textový řetězec a chcete najít a vyjmout pouze text uzavřený v (závorkách).

    K tomu potřebujete funkci MID, která vrátí požadovaný počet znaků z řetězce, a funkci Excel FIND nebo SEARCH, která určí, kde začít a kolik znaků extrahovat.

    =MID(A2,SEARCH("(",A2)+1, SEARCH(")",A2)-SEARCH("(",A2)-1)

    Logika tohoto vzorce je podobná těm, které jsme probírali v předchozím příkladu. A opět je nejsložitější částí poslední argument, který vzorci říká, kolik znaků má vrátit. Ten pěkně dlouhý výraz v argumentu num_chars dělá následující:

    • Nejprve zjistíte polohu uzavírací závorky: HLEDAT(")",A2)
    • Poté vyhledejte pozici úvodní závorky: HLEDAT("(",A2)
    • Pak vypočtete rozdíl mezi pozicí uzavírací a otevírací závorky a od tohoto čísla odečtete 1, protože ve výsledku nechcete mít ani jednu ze závorek: SEARCH(")",A2)-SEARCH("(",A2))-1

    Nic vám samozřejmě nebrání použít místo funkce HLEDAT funkci FIND aplikace Excel, protože citlivost nebo necitlivost velkých a malých písmen v tomto příkladu nehraje žádnou roli.

    Doufejme, že tento návod nám objasnil, jak používat funkce HLEDAT a NAJÍT v aplikaci Excel. V příštím návodu se budeme podrobně zabývat funkcí REPLACE, takže prosím zůstaňte s námi. Děkujeme za přečtení!

    Stáhnout cvičebnici

    Příklady vzorců FIND a SEARCH

    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.