Obsah
V návode je predstavených niekoľko rôznych vzorcov na vykonávanie dvojrozmerného vyhľadávania v programe Excel. Stačí si pozrieť alternatívy a vybrať si svoju obľúbenú :)
Keď niečo hľadáte v tabuľkách programu Excel, väčšinou hľadáte vertikálne v stĺpcoch alebo horizontálne v riadkoch. Niekedy však potrebujete hľadať v riadkoch aj stĺpcoch. Inými slovami, snažíte sa nájsť hodnotu v priesečníku určitého riadku a stĺpca. Tento postup sa nazýva vyhľadávanie matíc (alias 2-rozmerné alebo 2-cestné vyhľadávanie ) a tento návod ukazuje, ako to urobiť 4 rôznymi spôsobmi.
Vzorec Excel INDEX MATCH MATCH
Najobľúbenejším spôsobom, ako v programe Excel vykonať obojsmerné vyhľadávanie, je použitie funkcie INDEX MATCH MATCH. Ide o variáciu klasického vzorca INDEX MATCH, ku ktorému pridáte ešte jednu funkciu MATCH, aby ste získali čísla riadkov aj stĺpcov:
INDEX ( data_array , MATCH ( vlookup_value , lookup_column_range , 0), MATCH ( hodnota hlookup , lookup_row_range , 0))Ako príklad si vytvorme vzorec, ktorý z nasledujúcej tabuľky vytiahne populáciu určitého zvieraťa v danom roku. Na začiatok definujeme všetky argumenty:
- Data_array - B2:E4 (dátové bunky bez záhlaví riadkov a stĺpcov)
- Vlookup_value - H1 (cieľové zviera)
- Lookup_column_range - A2:A4 (záhlavie riadkov: názvy zvierat) - A3:A4
- Hlookup_value - H2 (cieľový rok)
- Lookup_row_range - B1:E1 (hlavičky stĺpcov: roky)
Ak spojíte všetky argumenty, dostanete tento vzorec pre obojsmerné vyhľadávanie:
=INDEX(B2:E4, MATCH(H1, A2:A4, 0), MATCH(H2, B1:E1, 0))
Ako tento vzorec funguje
Aj keď to na prvý pohľad vyzerá trochu zložito, logika vzorca je naozaj jednoduchá a ľahko pochopiteľná. Funkcia INDEX získava hodnotu z dátového poľa na základe čísel riadkov a stĺpcov a dve funkcie MATCH tieto čísla dodávajú:
INDEX(B2:E4, číslo_riadku, číslo_stĺpca)
Tu využívame schopnosť MATCH(lookup_value, lookup_array, [match_type]) vrátiť relatívna poloha z lookup_value na stránke lookup_array .
Aby sme teda získali číslo riadku, vyhľadáme zviera záujmu (H1) v záhlaví riadkov (A2:A4):
MATCH(H1, A2:A4, 0)
Aby sme získali číslo stĺpca, vyhľadáme cieľový rok (H2) v záhlaví stĺpcov (B1:E1):
MATCH(H2, B1:E1, 0)
V oboch prípadoch hľadáme presnú zhodu nastavením tretieho argumentu na hodnotu 0.
V tomto príklade prvý MATCH vráti 2, pretože naša hodnota vlookup (Polárny medveď) sa nachádza v A3, čo je 2. bunka v A2:A4. Druhý MATCH vráti 3, pretože hodnota hlookup (2000) sa nachádza v D1, čo je 3. bunka v B1:E1.
Vzhľadom na vyššie uvedené sa vzorec redukuje na:
INDEX(B2:E4, 2, 3)
A vrátiť hodnotu v priesečníku 2. riadku a 3. stĺpca v dátovom poli B2:E4, čo je hodnota v bunke D3.
Vzorec VLOOKUP a MATCH pre dvojcestné vyhľadávanie
Ďalším spôsobom, ako v programe Excel vykonať dvojrozmerné vyhľadávanie, je použitie kombinácie funkcií VLOOKUP a MATCH:
VLOOKUP( vlookup_value , table_array , MATCH( hlookup_value , lookup_row_range , 0), FALSE)Pre našu vzorovú tabuľku má vzorec nasledujúci tvar:
=VLOOKUP(H1, A2:E4, MATCH(H2, A1:E1, 0), FALSE)
Kde:
- Table_array - A2:E4 (dátové bunky vrátane záhlaví riadkov)
- Vlookup_value - H1 (cieľové zviera)
- Hlookup_value - H2 (cieľový rok)
- Lookup_row_range - A1:E1 (hlavičky stĺpcov: roky)
Ako tento vzorec funguje
Jadrom vzorca je funkcia VLOOKUP nakonfigurovaná na presnú zhodu (posledný argument je nastavený na FALSE), ktorá vyhľadá hľadanú hodnotu (H1) v prvom stĺpci tabuľkového poľa (A2:E4) a vráti hodnotu z iného stĺpca v tom istom riadku. Na určenie, z ktorého stĺpca sa má vrátiť hodnota, sa použije funkcia MATCH, ktorá je tiež nakonfigurovaná na presnú zhodu (posledný argument je nastavený na 0):
MATCH(H2, A1:E1, 0)
MATCH vyhľadá hodnotu v H2 v záhlaví stĺpcov (A1:E1) a vráti relatívnu pozíciu nájdenej bunky. V našom prípade sa cieľový rok (2010) nachádza v bunke E1, ktorá je na 5. mieste vo vyhľadávacom poli. col_index_num argument VLOOKUP:
VLOOKUP(H1, A2:E4, 5, FALSE)
VLOOKUP ju odtiaľ prevezme, nájde presnú zhodu s hodnotou vyhľadávania v A2 a vráti hodnotu z 5. stĺpca toho istého riadku, čo je bunka E2.
Dôležité upozornenie! Aby vzorec fungoval správne, table_array (A2:E4) VLOOKUP a lookup_array MATCH (A1:E1) musí mať rovnaký počet stĺpcov, inak sa počet odovzdaný MATCH col_index_num bude nesprávny (nebude zodpovedať pozícii stĺpca v table_array ).
Funkcia XLOOKUP na vyhľadávanie v riadkoch a stĺpcoch
Nedávno spoločnosť Microsoft predstavila v programe Excel ešte jednu funkciu, ktorá má nahradiť všetky existujúce vyhľadávacie funkcie, ako sú VLOOKUP, HLOOKUP a INDEX MATCH. Funkcia XLOOKUP dokáže okrem iného vyhľadávať priesečník konkrétneho riadku a stĺpca:
XLOOKUP( vlookup_value , vlookup_column_range , XLOOKUP( hlookup_value , hlookup_row_range , data_array ))Pre náš vzorový súbor údajov platí tento vzorec:
=XLOOKUP(H1, A2:A4, XLOOKUP(H2, B1:E1, B2:E4))
Poznámka: V súčasnosti je funkcia XLOOKUP beta verziou, ktorá je dostupná len pre predplatiteľov služby Office 365, ktorí sú súčasťou programu Office Insiders.
Ako tento vzorec funguje
Vzorec využíva schopnosť funkcie XLOOKUP vrátiť celý riadok alebo stĺpec. Vnútorná funkcia vyhľadá cieľový rok v riadku záhlavia a vráti všetky hodnoty pre tento rok (v tomto príklade pre rok 1980). return_array argument vonkajšieho XLOOKUP:
XLOOKUP(H1, A2:A4, {22000;25000;700})
Vonkajšia funkcia XLOOKUP vyhľadá cieľové zviera v záhlaví stĺpcov a vráti hodnotu na rovnakej pozícii z návratového poľa.
Vzorec SUMPRODUCT pre obojsmerné vyhľadávanie
Funkcia SUMPRODUCT je v programe Excel ako švajčiarsky nožík - dokáže veľa vecí nad rámec svojho určenia, najmä pokiaľ ide o vyhodnocovanie viacerých kritérií.
Ak chcete vyhľadať dve kritériá v riadkoch a stĺpcoch, použite tento všeobecný vzorec:
SUMPRODUCT( vlookup_column_range = vlookup_value ) * ( hlookup_row_range = hlookup_value ), data_array )Na vykonanie dvojcestného vyhľadávania v našom súbore údajov sa použije nasledujúci vzorec:
=SUMPRODUKT((A2:A4=H1) * (B1:E1=H2), B2:E4)
Funguje aj nasledujúca syntax:
=SUMPRODUKT((A2:A4=H1) * (B1:E1=H2) * B2:E4)
Ako tento vzorec funguje
V jadre vzorca porovnávame dve vyhľadávacie hodnoty so záhlaviami riadkov a stĺpcov (cieľové zviera v H1 so všetkými názvami zvierat v A2:A4 a cieľový rok v H2 so všetkými rokmi v B1:E1):
(A2:A4=H1) * (B1:E1=H2)
Výsledkom sú 2 polia hodnôt TRUE a FALSE, pričom TRUE predstavuje zhodu:
{FALSE;FALSE;TRUE} * {FALSE,TRUE,FALSE,FALSE}
Operácia násobenia zmení hodnoty TRUE a FALSE na 1 a 0 a vytvorí dvojrozmerné pole pozostávajúce zo 4 stĺpcov a 3 riadkov (riadky sú oddelené bodkočiarkami a každý stĺpec údajov čiarkou):
{0,0,0,0;0,0,0,0;0,1,0,0}
Funkcia SUMPRODUCT vynásobí prvky uvedeného poľa položkami B2:E4 na rovnakých pozíciách:
{0,0,0,0;0,0,0,0;0,1,0,0} * {22000,13800,8500,3500;25000,23000,22000,20000;700,2000,2300,2500}
A keďže vynásobením nulou dostaneme nulu, v prvom poli zostane len položka zodpovedajúca 1:
SUMPRODUCT({0,0,0,0;0,0,0,0;0,2000,0,0})
Nakoniec SUMPRODUCT sčíta prvky výsledného poľa a vráti hodnotu 2000.
Poznámka. Ak má vaša tabuľka viac ako jeden riadok a/alebo hlavičky stĺpcov s rovnakým názvom, výsledné pole bude obsahovať viac ako jedno číslo iné ako nula a všetky tieto čísla sa spočítajú. Ako výsledok dostanete súčet hodnôt, ktoré spĺňajú obe kritériá. Práve tým sa vzorec SUMPRODUCT líši od INDEX MATCH MATCH a VLOOKUP, ktoré vrátia prvú nájdenú zhodu.
Vyhľadávanie matice s pomenovanými rozsahmi (explicitný Intersection)
Ďalším úžasne jednoduchým spôsobom, ako v programe Excel vykonať maticové vyhľadávanie, je použitie pomenovaných rozsahov. Tu je postup:
Časť 1: Názov stĺpcov a riadkov
Najrýchlejší spôsob, ako pomenovať každý riadok a každý stĺpec v tabuľke, je tento:
- Vyberte celú tabuľku (v našom prípade A1:E4).
- Na Vzorce na karte Definované názvy kliknite na položku Vytvoriť z výberu alebo stlačte klávesovú skratku Ctrl + Shift + F3.
- V Vytvorenie názvov z výberu dialógové okno, vyberte Horný rad a Ľavý stĺpec, a kliknite na tlačidlo OK.
Týmto spôsobom sa automaticky vytvoria názvy na základe záhlaví riadkov a stĺpcov. Existuje však niekoľko upozornení:
- Ak sú záhlavia vašich stĺpcov a/alebo riadkov číslami alebo obsahujú špecifické znaky, ktoré nie sú povolené v názvoch programu Excel, názvy pre takéto stĺpce a riadky nebudú vytvorené. Ak chcete zobraziť zoznam vytvorených názvov, otvorte Správcu názvov ( Ctrl + F3 ). Ak niektoré názvy chýbajú, definujte ich ručne, ako je vysvetlené v časti Ako pomenovať rozsah v programe Excel.
- Ak niektoré záhlavia riadkov alebo stĺpcov obsahujú medzery, nahradia sa napríklad podčiarkovníkmi, Polar_bear .
Pre našu vzorovú tabuľku Excel automaticky vytvoril iba názvy riadkov. Názvy stĺpcov sa musia vytvoriť ručne, pretože záhlavia stĺpcov sú čísla. Ak to chcete prekonať, môžete jednoducho pred čísla predradiť podčiarkovníky, ako napr. _1990 .
Výsledkom sú nasledujúce pomenované rozsahy:
Časť 2: Vytvorte vzorec na vyhľadávanie matíc
Ak chcete vytiahnuť hodnotu v priesečníku daného riadku a stĺpca, stačí do prázdnej bunky zadať jeden z nasledujúcich všeobecných vzorcov:
= názov_riadku názov_stĺpcaAlebo naopak:
= názov_stĺpca názov_riadkuNapríklad na zistenie populácie modrých veľrýb v roku 1990 je vzorec jednoduchý:
=Blue_whale _1990
Ak niekto potrebuje podrobnejšie pokyny, v nasledujúcich krokoch sa dozviete, ako postupovať:
- Do bunky, v ktorej chcete zobraziť výsledok, zadajte znak rovnosti (=).
- Začnite písať názov cieľového riadku, napríklad, Blue_whale . Po zadaní niekoľkých znakov Excel zobrazí všetky existujúce názvy, ktoré zodpovedajú zadaným údajom. Dvojitým kliknutím na požadovaný názov ho zadáte do vzorca:
- Za názov riadku zadajte a priestor , ktorý funguje ako operátor križovatky v tomto prípade.
- Zadajte názov cieľového stĺpca ( _1990 v našom prípade).
- Hneď po zadaní názvov riadkov a stĺpcov Excel zvýrazní príslušný riadok a stĺpec v tabuľke a vy stlačením klávesu Enter dokončíte vzorec:
Vyhľadávanie matice je hotové a výsledok je zobrazený na nasledujúcom obrázku:
Takto sa v Exceli vyhľadáva v riadkoch a stĺpcoch. Ďakujem vám za prečítanie a dúfam, že sa na našom blogu uvidíme budúci týždeň!
Dostupné súbory na stiahnutie
Ukážkový zošit 2-rozmerného vyhľadávania