Obsah
Výukový program představuje XLOOKUP - novou funkci pro vertikální a horizontální vyhledávání v aplikaci Excel. Vyhledávání vlevo, poslední shoda, Vlookup s více kritérii a mnoho dalších věcí, k jejichž provedení bylo dříve třeba raketového stupně vzdělání, je nyní snadné jako ABC.
Kdykoli potřebujete v Excelu vyhledávat, kterou funkci použijete? Je to základní VLOOKUP, nebo jeho horizontální sourozenec HLOOKUP? Spoléháte se ve složitějším případě na kanonickou kombinaci INDEX MATCH, nebo svěříte práci Power Query? Dobrou zprávou je, že už si nemusíte vybírat - všechny tyto metody uvolňují místo výkonnější a univerzálnější nástupkyni, funkci XLOOKUP.
V čem je XLOOKUP lepší? V mnoha ohledech! Umí hledat vertikálně i horizontálně, vlevo i nahoře, vyhledávat podle více kritérií a dokonce vrátit celý sloupec nebo řádek dat, ne jen jednu hodnotu. Microsoftu to trvalo více než tři desetiletí, ale nakonec se mu podařilo navrhnout robustní funkci, která překonává mnoho frustrujících chyb a nedostatků VLOOKUP.
V čem je háček? Bohužel, jeden tu je. Funkce XLOOKUP je k dispozici pouze v aplikacích Excel pro Microsoft 365, Excel 2021 a Excel pro web.
Funkce Excel XLOOKUP - syntaxe a použití
Funkce XLOOKUP v aplikaci Excel prohledá rozsah nebo pole pro zadanou hodnotu a vrátí související hodnotu z jiného sloupce. Může vyhledávat vertikálně i horizontálně a provést přesnou (výchozí), přibližnou (nejbližší) nebo zástupnou (částečnou) shodu.
Syntaxe funkce XLOOKUP je následující:
XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])První tři argumenty jsou povinné a poslední tři nepovinné.
- Lookup_value - hodnotu, kterou chcete vyhledat.
- Lookup_array - rozsah nebo pole, ve kterém se má hledat.
- Return_array - rozsah nebo pole, ze kterého se mají vracet hodnoty.
- If_not_found [nepovinné] - hodnota, která se vrátí, pokud není nalezena žádná shoda. Pokud je vynechána, je vrácena chyba #N/A.
- Match_mode [nepovinné] - typ shody, která se má provést:
- 0 nebo vynecháno (výchozí) - přesná shoda. Pokud není nalezena, je vrácena chyba #N/A.
- -1 - přesná shoda nebo nejbližší menší hodnota. Pokud není nalezena přesná shoda, je vrácena nejbližší menší hodnota.
- 1 - přesná shoda nebo nejbližší větší hodnota. Pokud není nalezena přesná shoda, je vrácena nejbližší větší hodnota.
- 2 - shoda se zástupným znakem.
- Search_mode [nepovinné] - směr vyhledávání:
- 1 nebo vynecháno (výchozí) - vyhledávání od prvního po poslední.
- -1 - vyhledávání v opačném pořadí, od posledního k prvnímu.
- 2 - binární vyhledávání v datech seřazených vzestupně.
- -2 - binární vyhledávání v sestupně seřazených datech.
Podle společnosti Microsoft, binární vyhledávání je zařazen pro pokročilé uživatele. Jedná se o speciální algoritmus, který najde pozici hledané hodnoty v rámci setříděného pole porovnáním s prostředním prvkem pole. Binární vyhledávání je mnohem rychlejší než běžné vyhledávání, ale správně funguje pouze na setříděných datech.
Základní vzorec XLOOKUP
Pro lepší pochopení si sestavíme vzorec Xlookup v jeho nejjednodušší podobě, který provede přesné vyhledávání. K tomu budeme potřebovat pouze první 3 argumenty.
Předpokládejme, že máte k dispozici souhrnnou tabulku s informacemi o pěti oceánech na Zemi. Chcete získat plochu konkrétního vstupu do oceánu v F1 ( lookup_value ). S názvy oceánů v A2:A6 ( lookup_array ) a plochy v C2:C6 ( return_array ), vzorec je následující:
=XLOOKUP(F1, A2:A6, C2:C6)
Přeloženo do češtiny to říká: vyhledej hodnotu F1 v A2:A6 a vrať hodnotu z C2:C6 ve stejném řádku. Žádná čísla indexů sloupců, žádné třídění, žádné další směšné vychytávky Vlookup! Prostě to funguje :)
XLOOKUP vs. VLOOKUP v aplikaci Excel
Ve srovnání s tradiční funkcí VLOOKUP má XLOOKUP mnoho výhod. V čem je lepší než VLOOKUP? Zde je seznam 10 nejlepších funkcí, které překonávají všechny ostatní vyhledávací funkce v aplikaci Excel:
- Vertikální a horizontální vyhledávání . Funkce XLOOKUP získala svůj název díky schopnosti vyhledávat vertikálně i horizontálně.
- Podívejte se libovolným směrem: doprava, doleva, dolů nebo nahoru. . Zatímco VLOOKUP může vyhledávat pouze v nejlevějším sloupci a HLOOKUP v nejvyšším řádku, XLOOKUP taková omezení nemá. Notoricky známé vyhledávání vlevo v Excelu už není utrpením!
- Přesná shoda ve výchozím nastavení Ve většině situací budete hledat přesnou shodu a funkce XLOOKUP ji ve výchozím nastavení vrací (na rozdíl od funkce VLOOKUP, která ve výchozím nastavení používá přibližnou shodu). Samozřejmě můžete funkci XLOOKUP přimět, aby v případě potřeby provedla i přibližnou shodu.
- Částečná shoda se zástupnými znaky . Pokud znáte pouze část hodnoty vyhledávání, ale ne celou, hodí se zástupná shoda.
- Vyhledávání v opačném pořadí . Dříve jste museli pro získání posledního výskytu obrátit pořadí zdrojových dat. Nyní stačí nastavit parametr search_mode na hodnotu -1, aby vzorec Xlookup hledal od zadní části a vrátil poslední shodu.
- Vrátit více hodnot . Manipulací s return_array můžete vytáhnout celý řádek nebo sloupec dat související s hodnotou vyhledávání.
- Vyhledávání s více kritérii . Excel XLOOKUP nativně zpracovává pole, což umožňuje provádět vyhledávání s více kritérii.
- Pokud je chybová funkce . Tradičně používáme funkci IFNA k zachycení chyb #N/A. XLOOKUP tuto funkci zahrnuje do funkce if_not_found argument umožňující vypsat vlastní text, pokud není nalezena žádná platná shoda.
- Vložení/odstranění sloupců . Jedním z nejvíce nepříjemných problémů u VLOOKUP je, že přidávání nebo odebírání sloupců porušuje vzorec, protože návratový sloupec je identifikován svým indexovým číslem. U XLOOKUP zadáváte návratový rozsah, nikoli číslo, což znamená, že můžete vložit a odebrat tolik sloupců, kolik potřebujete, aniž byste cokoli porušili.
- Lepší výkon . VLOOKUP by mohl zpomalit vaše pracovní listy, protože do výpočtů zahrnuje celou tabulku, což vede ke zpracování mnohem většího počtu buněk, než je skutečně potřeba. XLOOKUP zpracovává pouze vyhledávací a návratová pole, na kterých skutečně závisí.
Jak používat XLOOKUP v aplikaci Excel - příklady vzorců
Následující příklady ukazují nejužitečnější funkce XLOOKUP v akci. Kromě toho objevíte několik netriviálních způsobů použití, které posunou vaše dovednosti v oblasti vyhledávání v Excelu na novou úroveň.
Podívejte se nahoru vertikálně i horizontálně
Microsoft Excel měl dříve dvě funkce pro různé typy vyhledávání, přičemž každá z nich měla vlastní syntaxi a pravidla použití: VLOOKUP pro vertikální vyhledávání ve sloupci a HLOOKUP pro horizontální vyhledávání v řádku.
Funkce XLOOKUP umí obojí se stejnou syntaxí. Rozdíl je v tom, co zadáte pro vyhledávací a návratové pole.
Pro vyhledávání v zadejte sloupce:
=XLOOKUP(E1, A2:A6, B2:B6)
Pro h-lookup zadejte místo sloupců řádky:
=XLOOKUP(I1, B1:F1, B2:F2)
Nativní vyhledávání vlevo
V dřívějších verzích Excelu byl vzorec INDEX MATCH jediným spolehlivým způsobem, jak se podívat doleva nebo nahoru. Nyní již nemusíte kombinovat dvě funkce tam, kde by stačila jedna. Stačí zadat cílové vyhledávací pole a XLOOKUP si s ním bez problémů poradí bez ohledu na jeho umístění.
Jako příklad přidejme Hodnost Cílem je získat pořadí oceánského vstupu v F1. VLOOKUP by zde narazil, protože může vrátit pouze hodnotu ze sloupce napravo od vyhledávacího sloupce. Vzorec Xlookup si s tím snadno poradí:
=XLOOKUP(F1, B2:B6, A2:A6)
Podobným způsobem se můžete podívat výše při horizontálním vyhledávání v řádcích.
XLOOKUP s přesnou a přibližnou shodou
Chování shody je řízeno pátým argumentem nazvaným match_mode . Ve výchozím nastavení se provede přesná shoda.
Upozorňujeme, že i když zvolíte přibližnou shodu ( match_mode nastaveno na 1 nebo -1), bude funkce stále nejprve hledat přesnou shodu. Rozdíl je v tom, co vrátí, pokud není nalezena přesná hodnota vyhledávání.
Argument Match_mode:
- 0 nebo vynecháno - přesná shoda; pokud není nalezeno - #N/A chyba.
- -1 - přesná shoda; pokud není nalezena - další menší položka.
- 1 - přesná shoda; pokud není nalezena - další větší položka.
Přesná shoda XLOOKUP
Tuto možnost pravděpodobně používáte v 99 % případů, kdy v Excelu vyhledáváte. Vzhledem k tomu, že přesná shoda je výchozím chováním programu XLOOKUP, můžete vynechat možnost. match_mode a zadejte pouze první 3 požadované argumenty.
V některých situacích však přesná shoda nebude fungovat. Typickým scénářem je situace, kdy vyhledávací tabulka neobsahuje všechny hodnoty, ale spíše "milníky" nebo "hranice", jako jsou množstevní slevy, provize z prodeje atd.
Naše ukázková vyhledávací tabulka ukazuje korelaci mezi výsledky zkoušek a známkami. Jak vidíte na obrázku níže, přesná shoda funguje pouze tehdy, když se skóre konkrétního studenta přesně shoduje s hodnotou ve vyhledávací tabulce (jako Christian v řádku 3). Ve všech ostatních případech je vrácena chyba #N/A.
=XLOOKUP(F2, $B$2:$B$6, $C$2:$C$6)
Abychom získali známky místo chyb #N/A, musíme hledat přibližnou shodu, jak je uvedeno v dalším příkladu.
Přibližná shoda XLOOKUP
Chcete-li provést přibližné vyhledávání, nastavte hodnotu match_mode na -1 nebo 1, podle toho, jak jsou vaše data uspořádána.
V našem případě jsou ve vyhledávací tabulce uvedeny dolní hranice známek. Nastavíme tedy match_mode na -1 pro hledání další menší hodnoty, pokud není nalezena přesná shoda:
=XLOOKUP(F11, $B$11:$B$15, $C$11:$C$15, ,-1)
Například Brian má známku 98 (F2). Vzorec hledá tuto hodnotu v B2:B6, ale nemůže ji najít. Pak hledá další menší položku a najde 90, což odpovídá známce A:
Pokud by naše vyhledávací tabulka obsahovala horní hranice známek, nastavili bychom. match_mode na 1, aby se v případě neúspěšného hledání přesné shody vyhledala další větší položka:
=XLOOKUP(F2, $B$2:$B$6, $C$2:$C$6, ,1)
Vzorec hledá hodnotu 98 a opět ji nenajde. Tentokrát se pokusí najít nejbližší větší hodnotu a získá 100, což odpovídá třídě A:
Tip: Při kopírování vzorce Xlookup do více buněk zamkněte vyhledávací nebo návratové rozsahy pomocí absolutních odkazů na buňky (například $B$2:$B$6), abyste zabránili jejich změně.
XLOOKUP s částečnou shodou (zástupné znaky)
Chcete-li provést částečné vyhledání shody, nastavte parametr match_mode na hodnotu 2, což funkci XLOOKUP přikáže zpracovat zástupné znaky:
- Hvězdička (*) - představuje libovolnou sekvenci znaků.
- Otazník (?) - představuje jakýkoli jednotlivý znak.
Abyste viděli, jak to funguje, vezměte si následující příklad. Ve sloupci A máte několik modelů chytrých telefonů a ve sloupci B jejich kapacitu baterie. Zajímá vás baterie určitého chytrého telefonu. Problém je v tom, že si nejste jisti, zda můžete zadat název modelu přesně tak, jak je uveden ve sloupci A. Chcete-li to překonat, zadejte část, která tam určitě je, a nahraďte zbývající částznaky se zástupnými znaky.
Chcete-li například získat informace o baterii iPhonu X, použijte tento vzorec:
=XLOOKUP("*iphone X*", A2:A8, B2:B8, ,2)
Nebo zadejte známou část vyhledávací hodnoty do některé buňky a spojte odkaz na buňku se zástupnými znaky:
=XLOOKUP("*"&E1& "*", A2:A8, B2:B8, ,2)
XLOOKUP v opačném pořadí pro získání posledního výskytu
V případě, že tabulka obsahuje několik výskytů hodnoty vyhledávání, může být někdy potřeba vrátit hodnotu. poslední zápas . Chcete-li to mít hotové, nakonfigurujte vzorec Xlookup tak, aby vyhledával v opačném pořadí.
Směr hledání se řídí 6. argumentem s názvem search_mode :
- 1 nebo vynecháno (výchozí) - vyhledává od první po poslední hodnotu, tj. shora dolů při vertikálním vyhledávání nebo zleva doprava při horizontálním vyhledávání.
- -1 - vyhledává v opačném pořadí od poslední po první hodnotu.
Jako příklad uveďme vrácení posledního prodeje, který uskutečnil konkrétní prodejce. Za tímto účelem sestavíme první tři požadované argumenty (G1 pro lookup_value , B2:B9 pro lookup_array a D2:D9 pro return_array ) a do pátého argumentu vložte -1:
=XLOOKUP(G1, B2:B9, D2:D9, , ,-1)
Přímočaré a snadné, že?
XLOOKUP pro vrácení více sloupců nebo řádků
Další úžasnou funkcí XLOOKUP je možnost vrátit více než jednu hodnotu vztahující se ke stejné shodě. Vše se provádí pomocí standardní syntaxe a bez jakýchkoli dalších manipulací!
Předpokládejme, že z níže uvedené tabulky chcete získat všechny údaje týkající se prodejce, který vás zajímá (F2). Musíte zadat rozsah, nikoliv jeden sloupec nebo řádek, pro položku return_array argument:
=XLOOKUP(F2, A2:A7, B2:D7)
Vzorec zadáte do levé horní buňky rozsahu výsledků a Excel automaticky rozsype výsledky do sousedních prázdných buněk. V našem případě obsahuje návratové pole (B2:D7) 3 sloupce ( Datum , Položka a Částka ) a všechny tři hodnoty jsou vráceny do rozsahu G2:I2.
Pokud byste raději uspořádali výsledky vertikálně do sloupce, vnořte funkci XLOOKUP do funkce TRANSPOSE, která vrácené pole převrátí:
=TRANSPOSE(XLOOKUP(G1, A2:A7, B2:D7))
Podobným způsobem můžete vrátit celý sloupec dat, např. Částka Pro tento účel použijte buňku F1, která obsahuje "Amount" jako lookup_value , rozsah A1:D1 obsahující záhlaví sloupců jako lookup_array a rozsah A2:D7 obsahující všechna data jako return_array .
=XLOOKUP(F1, A1:D1, A2:D7)
Poznámka: Protože se do sousedních buněk vyplňuje více hodnot, ujistěte se, že máte vpravo nebo dole dostatek prázdných buněk. Pokud Excel nenajde dostatek prázdných buněk, dojde k chybě #SPILL!.
Tip. XLOOKUP umí nejen vrátit více položek, ale také je nahradit jinými hodnotami, které zadáte. Příklad takového hromadného nahrazení najdete zde: Jak vyhledat a nahradit více hodnot pomocí XLOOKUP.
XLOOKUP s více kritérii
Další velkou výhodou funkce XLOOKUP je, že nativně zpracovává pole. Díky této schopnosti můžete vyhodnotit více kritérií přímo v příkazu. lookup_array argument:
XLOOKUP(1, ( kritérium_rozsah1 = kritéria1 ) * ( kritérium_rozsah2 = kritéria2 ) * (...), return_array )Jak tento vzorec funguje : Výsledkem každého testu kritérií je pole hodnot TRUE a FALSE. Násobením těchto polí se hodnoty TRUE a FALSE převedou na 1, resp. 0, a vznikne výsledné vyhledávací pole. Jak víte, násobení nulou dává vždy nulu, takže ve vyhledávacím poli jsou pouze položky, které splňují všechna kritéria, reprezentovány hodnotou 1. A protože naše vyhledávací hodnota je "1", Excel vezme první "1" ve vyhledávacím poli. lookup_array (první shoda) a vrací hodnotu z return_array ve stejné poloze.
Abychom viděli vzorec v akci, vytáhneme částku z D2:D10 ( return_array ) s následujícími podmínkami:
- Kritérium1 (datum) = G1
- Kritérium2 (prodejce) = G2
- Kritérium3 (položka) = G3
S daty v A2:A10 ( kritérium_rozsah1 ), jména prodejců v B2:B10 ( kritérium_rozsah2 ) a položky v C2:C10 ( kritérium_rozsah3 ), má vzorec tento tvar:
=XLOOKUP(1, (B2:B10=G1) * (A2:A10=G2) * (C2:C10=G3), D2:D10)
Přestože funkce XLOOKUP aplikace Excel zpracovává pole, funguje jako běžný vzorec a dokončí se běžným stiskem klávesy Enter.
Vzorec XLOOKUP s více kritérii není omezen na podmínky "rovná se". Můžete použít i jiné logické operátory. Chcete-li například vyfiltrovat objednávky provedené v den G1 nebo dříve, vložte do prvního kritéria "<=G1":
=XLOOKUP(1, (A2:A10<=G1) * (B2:B10=G2) * (C2:C10=G3), D2:D10)
Dvojitý XLOOKUP
Chcete-li najít hodnotu v průsečíku určitého řádku a sloupce, proveďte tzv. dvojí vyhledávání nebo vyhledávání matic Ano, i to umí Excel XLOOKUP! Jednoduše vnoříte jednu funkci do druhé:
XLOOKUP( lookup_value1 , lookup_array1 , XLOOKUP( lookup_value2 , lookup_array2 , data_values ))Jak tento vzorec funguje : Vzorec je založen na schopnosti funkce XLOOKUP vrátit celý řádek nebo sloupec. Vnitřní funkce vyhledá svou vyhledávací hodnotu a vrátí sloupec nebo řádek souvisejících dat. Toto pole přejde do vnější funkce jako pole return_array .
V tomto příkladu budeme zjišťovat prodeje, které uskutečnil určitý prodejce v rámci určitého čtvrtletí. Za tímto účelem zadáme hodnoty vyhledávání do polí H1 (jméno prodejce) a H2 (čtvrtletí) a provedeme obousměrný Xlookup s následujícím vzorcem:
=XLOOKUP(H1, A2:A6, XLOOKUP(H2, B1:E1, B2:E6))
Nebo naopak:
=XLOOKUP(H2, B1:E1, XLOOKUP(H1, A2:A6, B2:E6))
Kde A2:A6 jsou jména prodejců, B1:E1 jsou čtvrtiny (záhlaví sloupců) a B2:E6 jsou hodnoty dat.
Obousměrné vyhledávání lze také provést pomocí vzorce INDEX Match a několika dalšími způsoby. Další informace naleznete v části Obousměrné vyhledávání v aplikaci Excel.
Pokud Chyba XLOOKUP
Pokud není hodnota vyhledávání nalezena, Excel XLOOKUP vrátí chybu #N/A. Pro zkušené uživatele je to poměrně známé a srozumitelné, pro nováčky to může být poněkud matoucí. Chcete-li nahradit standardní zápis chyby uživatelsky přívětivou zprávou, zadejte do 4. argumentu s názvem vlastní text if_not_found .
Vraťme se k úplně prvnímu příkladu probíranému v tomto tutoriálu. Pokud někdo zadá do pole E1 neplatný název oceánu, následující vzorec mu výslovně oznámí, že "nebyla nalezena žádná shoda":
=XLOOKUP(E1, A2:A6, B2:B6, "Nebyla nalezena žádná shoda")
Poznámky:
- Na stránkách if_not_found zachytí pouze chyby #N/A, nikoli všechny chyby.
- Chyby #N/A lze také řešit pomocí IFNA a VLOOKUP, ale syntaxe je trochu složitější a vzorec je delší.
XLOOKUP rozlišující malá a velká písmena
Ve výchozím nastavení považuje funkce XLOOKUP malá a velká písmena za stejné znaky. Chcete-li, aby rozlišovala malá a velká písmena, použijte funkci EXACT pro příkaz lookup_array argument:
XLOOKUP(TRUE, EXACT( lookup_value , lookup_array ), return_array )Jak tento vzorec funguje : Funkce EXACT porovnává hodnotu vyhledávání s každou hodnotou v poli vyhledávání a vrací TRUE, pokud se přesně shodují, včetně velikosti písmen, jinak FALSE. Toto pole logických hodnot přechází do pole lookup. lookup_array XLOOKUP. Výsledkem je, že XLOOKUP hledá ve výše uvedeném poli hodnotu TRUE a vrací shodu z návratového pole.
Například pro získání ceny z B2:B7 ( return_array ) pro položku v E1 ( lookup_value) , vzorec v E2 je:
=XLOOKUP(TRUE, EXACT(E1, A2:A7), B2:B7, "Nenalezeno")
Poznámka: Pokud jsou v poli vyhledávání dvě nebo více přesně stejných hodnot (včetně velikosti písmen), je vrácena první nalezená shoda.
Excel XLOOKUP nefunguje
Pokud váš vzorec nefunguje správně nebo je chybný, je to pravděpodobně z následujících důvodů:
XLOOKUP není v mém Excelu k dispozici
Funkce XLOOKUP není zpětně kompatibilní. Je k dispozici pouze v aplikaci Excel pro Microsoft 365 a Excel 2021 a ve starších verzích se neobjeví.
XLOOKUP vrací nesprávný výsledek
Pokud váš zjevně správný vzorec Xlookup vrátí špatnou hodnotu, je pravděpodobné, že se vyhledávací nebo návratový rozsah "posunul" při kopírování vzorce dolů nebo napříč. Abyste tomu zabránili, nezapomeňte vždy uzamknout oba rozsahy pomocí absolutních odkazů na buňky (například $A$2:$A$10).
XLOOKUP vrací chybu #N/A
Chyba #N/A pouze znamená, že hodnota vyhledávání nebyla nalezena. Chcete-li tuto chybu opravit, zkuste vyhledat přibližnou shodu nebo informujte uživatele, že nebyla nalezena žádná shoda.
XLOOKUP vrací chybu #VALUE
K chybě #VALUE! dojde, pokud mají vyhledávací a návratové pole nekompatibilní rozměry. Není například možné vyhledávat v horizontálním poli a vracet hodnoty z vertikálního pole.
XLOOKUP vrací chybu #REF
Při vyhledávání mezi dvěma různými sešity, z nichž jeden je zavřený, se vyhodí chyba #REF! Chcete-li chybu opravit, jednoduše otevřete oba soubory.
Jak jste právě viděli, XLOOKUP má mnoho úžasných funkcí, které z něj dělají funkci pro téměř jakékoliv vyhledávání v Excelu. Děkuji vám 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ů Excel XLOOKUP (.xlsx soubor)