Obsah
V tomto návode nájdete niekoľko príkladov vzorcov, ktoré demonštrujú najefektívnejšie použitie INDEXU v programe Excel.
Zo všetkých funkcií Excelu, ktorých sila je často podceňovaná a nedostatočne využívaná, by INDEX určite patril niekde do top 10. Pritom táto funkcia je inteligentná, pružná a všestranná.
Čo je teda funkcia INDEX v programe Excel? Vzorec INDEX v podstate vracia odkaz na bunku v rámci daného poľa alebo rozsahu. Inými slovami, INDEX použijete, keď poznáte (alebo môžete vypočítať) pozíciu prvku v rozsahu a chcete získať skutočnú hodnotu tohto prvku.
Môže to znieť trochu triviálne, ale keď si uvedomíte skutočný potenciál funkcie INDEX, môže to zásadne zmeniť spôsob výpočtu, analýzy a prezentácie údajov v pracovných hárkoch.
Funkcia INDEX programu Excel - syntax a základné použitie
V programe Excel existujú dve verzie funkcie INDEX - forma poľa a referenčná forma. Obe formy možno používať vo všetkých verziách programu Microsoft Excel 365 - 2003.
Formulár poľa INDEX
Formulár poľa INDEX vráti hodnotu určitého prvku v rozsahu alebo poli na základe zadaných čísel riadkov a stĺpcov.
INDEX(array, row_num, [column_num])- pole - je rozsah buniek, pomenovaný rozsah alebo tabuľka.
- číslo_riadku - je číslo riadku v poli, z ktorého sa má vrátiť hodnota. Ak sa číslo_riadku vynechá, vyžaduje sa číslo_stĺpca.
- column_num - je číslo stĺpca, z ktorého sa má vrátiť hodnota. Ak je číslo stĺpca vynechané, vyžaduje sa číslo riadku.
Napríklad vzorec =INDEX(A1:D6, 4, 3)
vráti hodnotu v priesečníku 4. riadku a 3. stĺpca v rozsahu A1:D6, čo je hodnota v bunke C4.
Ak chcete získať predstavu o tom, ako vzorec INDEX funguje na skutočných údajoch, pozrite si nasledujúci príklad:
Namiesto zadávania čísel riadkov a stĺpcov do vzorca môžete zadať odkazy na bunky a získať tak univerzálnejší vzorec: =INDEX($B$2:$D$6, G2, G1)
Takže tento vzorec INDEX vráti počet položiek presne v priesečníku čísla výrobku zadaného v G2 (číslo_riadku) a čísla týždňa zadaného v bunke G1 (číslo_stĺpca).
Tip: Použitie absolútnych odkazov ($B$2:$D$6) namiesto relatívnych odkazov (B2:D6) v argumente poľa uľahčuje kopírovanie vzorca do iných buniek. Prípadne môžete previesť rozsah na tabuľku ( Ctrl + T ) a odkazovať naň názvom tabuľky.
Formulár poľa INDEX - čo si treba zapamätať
- Ak argument poľa pozostáva len z jedného riadku alebo stĺpca, môžete, ale nemusíte uviesť príslušný argument číslo_riadku alebo číslo_stĺpca.
- Ak argument array obsahuje viac ako jeden riadok a argument row_num je vynechaný alebo nastavený na 0, funkcia INDEX vráti pole celého stĺpca. Podobne, ak array obsahuje viac ako jeden stĺpec a argument column_num je vynechaný alebo nastavený na 0, vzorec INDEX vráti celý riadok. Tu je príklad vzorca, ktorý demonštruje toto správanie.
- Argumenty číslo_riadku a číslo_stĺpca musia odkazovať na bunku v rámci poľa, inak vzorec INDEX vráti chybu #REF!.
Referenčný formulár INDEX
Referenčná forma funkcie INDEX programu Excel vráti odkaz na bunku v priesečníku zadaného riadku a stĺpca.
INDEX(reference, číslo_riadku, [číslo_stĺpca], [číslo_oblasti] )- odkaz - je jeden alebo niekoľko rozsahov.
Ak zadávate viac ako jeden rozsah, oddeľte ich čiarkami a referenčný argument uzavrite do zátvoriek, napríklad (A1:B5, D1:F5).
Ak každý rozsah v referencii obsahuje len jeden riadok alebo stĺpec, príslušný argument číslo_riadku alebo číslo_stĺpca je nepovinný.
- číslo_riadku - číslo riadku v rozsahu, z ktorého sa má vrátiť odkaz na bunku, je to podobné ako pri formulári poľa.
- column_num - číslo stĺpca, z ktorého sa má vrátiť odkaz na bunku, tiež funguje podobne ako formulár poľa.
- area_num - nepovinný parameter, ktorý určuje, ktorý rozsah z referenčného argumentu sa má použiť. Ak sa vynechá, vzorec INDEX vráti výsledok pre prvý rozsah uvedený v referencii.
Napríklad vzorec =INDEX((A2:D3, A5:D7), 3, 4, 2)
vráti hodnotu bunky D7, ktorá sa nachádza na priesečníku 3. riadku a 4. stĺpca v druhej oblasti (A5:D7).
Referenčný formulár INDEX - čo si treba zapamätať
- Ak je argument číslo_riadku alebo číslo_stĺpca nastavený na nulu (0), vzorec INDEX vráti odkaz na celý stĺpec, resp. riadok.
- Ak sa vynechá číslo_riadku aj číslo_stĺpca, funkcia INDEX vráti oblasť zadanú v argumente area_num.
- Všetky argumenty _num (číslo_riadku, číslo_stĺpca a číslo_oblasti) musia odkazovať na bunku v rámci odkazu, inak vzorec INDEX vráti chybu #REF!.
Oba vzorce INDEX, ktoré sme doteraz prebrali, sú veľmi jednoduché a len ilustrujú tento koncept. Vaše skutočné vzorce budú pravdepodobne oveľa zložitejšie, preto si poďme preskúmať niekoľko najefektívnejších spôsobov použitia INDEXu v programe Excel.
Ako používať funkciu INDEX v programe Excel - príklady vzorcov
Samotný INDEX v programe Excel možno nemá veľa praktických využití, ale v kombinácii s inými funkciami, ako sú MATCH alebo COUNTA, môže vytvoriť veľmi výkonné vzorce.
Zdrojové údaje
Všetky naše INDEX vzorce (okrem posledného), budeme používať nižšie uvedené údaje. Pre pohodlné účely sú usporiadané v tabuľke s názvom SourceData .
Použitie tabuliek alebo pomenovaných rozsahov môže vzorce trochu predĺžiť, ale zároveň ich robí podstatne flexibilnejšími a lepšie čitateľnými. Ak chcete upraviť akýkoľvek INDEX vzorec pre vaše pracovné hárky, stačí upraviť jediný názov, čo plne vynahradí dlhšiu dĺžku vzorca.
Samozrejme, nič vám nebráni používať bežné rozsahy, ak chcete. V tomto prípade jednoducho nahradíte názov tabuľky SourceData s príslušným referenčným rozsahom.
1. Získanie N-tej položky zo zoznamu
Toto je základné použitie funkcie INDEX a najjednoduchší vzorec. Ak chcete získať určitú položku zo zoznamu, stačí napísať =INDEX(rozsah, n)
kde rozsah je rozsah buniek alebo pomenovaný rozsah a n je pozícia položky, ktorú chcete získať.
Pri práci s tabuľkami programu Excel môžete vybrať stĺpec pomocou myši a program Excel vytiahne názov stĺpca spolu s názvom tabuľky do vzorca:
Ak chcete získať hodnotu bunky v priesečníku daného riadku a stĺpca, použijete rovnaký postup len s tým rozdielom, že zadáte obidva - číslo riadku aj číslo stĺpca. Takýto vzorec ste už vlastne videli v akcii, keď sme preberali formulár INDEX poľa.
A tu je ešte jeden príklad. Ak chcete v našej vzorovej tabuľke nájsť druhú najväčšiu planétu v slnečnej sústave, zoraďte tabuľku podľa Priemer a použite nasledujúci vzorec INDEX:
=INDEX(SourceData, 2, 3)
Pole
je názov tabuľky alebo odkaz na rozsah, SourceData v tomto príklade.Row_num
je 2, pretože hľadáte druhú položku v zozname, ktorá je v 2.Column_num
je 3, pretože Priemer je 3. stĺpec v tabuľke.
Ak chcete vrátiť názov planéty a nie jej priemer, zmeňte číslo stĺpca na 1. A samozrejme, v argumentoch číslo_riadku a/alebo číslo_stĺpca môžete použiť odkaz na bunku, aby bol váš vzorec univerzálnejší, ako je znázornené na nasledujúcej snímke:
2. Získanie všetkých hodnôt v riadku alebo stĺpci
Okrem získania jednej bunky dokáže funkcia INDEX vrátiť pole hodnôt z celý riadok alebo stĺpec Ak chcete získať všetky hodnoty z určitého stĺpca, musíte vynechať argument row_num alebo ho nastaviť na 0. Podobne, ak chcete získať celý riadok, odovzdáte prázdnu hodnotu alebo 0 v stĺpci column_num.
Takéto vzorce INDEX sa ťažko dajú použiť samostatne, pretože Excel nedokáže vložiť pole hodnôt vrátených vzorcom do jednej bunky a namiesto toho by ste dostali chybu #VALUE! Ak však použijete INDEX v spojení s inými funkciami, napríklad SUM alebo AVERAGE, dosiahnete úžasné výsledky.
Na výpočet priemernej teploty planéty v slnečnej sústave môžete použiť napríklad nasledujúci vzorec:
=AVERAGE(INDEX(SourceData, , 4))
Vo vyššie uvedenom vzorci je argument column_num 4, pretože Teplota v 4. stĺpci našej tabuľky. Parameter row_num sa vynecháva.
Podobným spôsobom môžete zistiť minimálne a maximálne teploty:
=MAX(INDEX(SourceData, , 4))
=MIN(INDEX(SourceData, , 4))
A vypočítajte celkovú hmotnosť planéty (hmotnosť je 2. stĺpec v tabuľke):
=SUM(INDEX(SourceData, , 2))
Z praktického hľadiska je funkcia INDEX vo vyššie uvedenom vzorci zbytočná. Môžete jednoducho napísať =AVERAGE(rozsah)
alebo =SUM(rozsah)
a dostanete rovnaké výsledky.
Pri práci s reálnymi údajmi sa táto funkcia môže ukázať ako užitočná v rámci zložitejších vzorcov, ktoré používate na analýzu údajov.
3. Používanie INDEXU s inými funkciami (SUM, AVERAGE, MAX, MIN)
Z predchádzajúcich príkladov ste mohli nadobudnúť dojem, že vzorec INDEX vracia hodnoty, ale v skutočnosti vracia odkaz do bunky obsahujúcej hodnotu. A tento príklad demonštruje skutočnú povahu funkcie INDEX programu Excel.
Keďže výsledkom vzorca INDEX je odkaz, môžeme ho použiť v rámci iných funkcií na vytvorenie dynamický rozsah . Znie to mätúco? Nasledujúci vzorec vám všetko objasní.
Predpokladajme, že máte vzorec =PRIEMER(A1:A10)
ktorý vráti priemer hodnôt v bunkách A1:A10. Namiesto zápisu rozsahu priamo vo vzorci môžete nahradiť buď A1 alebo A10, alebo oboje funkciami INDEX, napríklad takto:
=PRIEMER(A1 : INDEX(A1:A20,10))
Oba uvedené vzorce poskytnú rovnaký výsledok, pretože funkcia INDEX tiež vracia odkaz na bunku A10 (číslo_riadku je nastavené na 10, číslo_kolíka je vynechané). Rozdiel je v tom, že rozsah je vo vzorci AVERAGE / INDEX dynamický a po zmene argumentu číslo_riadku v INDEXe sa zmení rozsah spracúvaný funkciou AVERAGE a vzorec vráti iný výsledok.
Zdá sa, že cesta vzorca INDEX je príliš komplikovaná, ale má praktické využitie, ako ukazujú nasledujúce príklady.
Príklad 1. Vypočítajte priemer prvých N položiek v zozname
Povedzme, že chcete zistiť priemerný priemer N najväčších planét v našej sústave. Priemer stĺpec od najväčšieho po najmenší a použite nasledujúci vzorec Priemer / Index:
=AVERAGE(C5 : INDEX(SourceData[Diameter], B1))
Príklad 2. Súčet položiek medzi zadanými dvoma položkami
Ak chcete vo vzorci definovať položky s hornou a dolnou hranicou, stačí použiť dve funkcie INDEX, ktoré vrátia prvú a poslednú požadovanú položku.
Napríklad nasledujúci vzorec vráti súčet hodnôt v poli Priemer stĺpec medzi dvoma položkami uvedenými v bunkách B1 a B2:
=SUM(INDEX(SourceData[Priemer],B1) : INDEX(SourceData[Priemer], B2))
4. vzorec INDEX na vytváranie dynamických rozsahov a rozbaľovacích zoznamov
Ako to často býva, keď začnete organizovať údaje v pracovnom hárku, nemusíte vedieť, koľko záznamov nakoniec budete mať. Nie je to prípad našej tabuľky planét, ktorá sa zdá byť kompletná, ale kto vie...
Ak sa v danom stĺpci mení počet položiek, napríklad od A1 po A n , môžete chcieť vytvoriť dynamický pomenovaný rozsah, ktorý bude obsahovať všetky bunky s údajmi. Pritom chcete, aby sa rozsah automaticky upravoval, keď pridáte nové položky alebo odstránite niektoré z existujúcich. Napríklad, ak máte v súčasnosti 10 položiek, váš pomenovaný rozsah je A1:A10. Ak pridáte novú položku, pomenovaný rozsah sa automaticky rozšíri na A1:A11, a ak si to rozmyslíte a odstránite tieto novo pridané údaje,rozsah sa automaticky vráti na A1:A10.
Hlavnou výhodou tohto prístupu je, že nemusíte neustále aktualizovať všetky vzorce v zošite, aby ste sa uistili, že sa vzťahujú na správne rozsahy.
Jedným zo spôsobov definovania dynamického rozsahu je použitie funkcie OFFSET programu Excel:
=OFFSET(Sheet_Name!$A$1, 0, 0, COUNTA(Sheet_Name!$A:$A), 1)
Ďalším možným riešením je použitie INDEXU Excelu spolu s COUNTA:
=Názov_lístka!$A$1:INDEX(Názov_lístka!$A:$A, COUNTA(Názov_lístka!$A:$A))
V oboch vzorcoch je A1 bunka obsahujúca prvú položku zoznamu a dynamický rozsah vytvorený oboma vzorcami bude rovnaký.
Rozdiel je v prístupoch. Zatiaľ čo funkcia OFFSET sa posunie od počiatočného bodu o určitý počet riadkov a/alebo stĺpcov, funkcia INDEX nájde bunku v priesečníku konkrétneho riadku a stĺpca. Funkcia COUNTA, ktorá sa používa v oboch vzorcoch, získa počet neprázdnych buniek v stĺpci záujmu.
V tomto príklade je v stĺpci A 9 neprázdnych buniek, takže COUNTA vráti 9. Následne INDEX vráti $A$9, čo je posledná použitá bunka v stĺpci A (zvyčajne INDEX vracia hodnotu, ale v tomto vzorci ho operátor odkazu (:) núti vrátiť odkaz). A keďže $A$1 je náš východiskový bod, konečným výsledkom vzorca je rozsah $A$1:$A$9.
Nasledujúci obrázok ukazuje, ako môžete použiť takýto vzorec Index na vytvorenie dynamického rozbaľovacieho zoznamu.
Tip. Najjednoduchší spôsob, ako vytvoriť dynamicky aktualizovaný rozbaľovací zoznam, je vytvoriť pomenovaný zoznam na základe tabuľky. V tomto prípade nebudete potrebovať žiadne zložité vzorce, pretože tabuľky programu Excel sú dynamické rozsahy ako také.
Na vytváranie závislých rozbaľovacích zoznamov môžete použiť aj funkciu INDEX a v nasledujúcom návode sú vysvetlené kroky: Vytvorenie kaskádového rozbaľovacieho zoznamu v programe Excel.
5. Výkonné vyhľadávanie pomocou INDEX / MATCH
Vykonávanie vertikálnych vyhľadávaní - tu funkcia INDEX skutočne zažiari. Ak ste niekedy skúšali používať funkciu Excel VLOOKUP, dobre viete o jej mnohých obmedzeniach, ako je napríklad nemožnosť vytiahnuť hodnoty zo stĺpcov naľavo od vyhľadávacieho stĺpca alebo limit 255 znakov pre vyhľadávanú hodnotu.
Spojenie INDEX / MATCH je v mnohých ohľadoch lepšie ako VLOOKUP:
- Žiadne problémy s ľavými vlookupmi.
- Žiadne obmedzenie veľkosti hodnoty vyhľadávania.
- Nevyžaduje sa žiadne triedenie (VLOOKUP s približnou zhodou vyžaduje zoradenie stĺpca vyhľadávania vzostupne).
- Môžete ľubovoľne vkladať a odstraňovať stĺpce v tabuľke bez toho, aby ste aktualizovali každý súvisiaci vzorec.
- A v neposlednom rade INDEX / MATCH nespomaľuje Excel tak, ako to robí viacnásobný Vlookup.
INDEX / MATCH sa používa nasledujúcim spôsobom:
=INDEX ( stĺpec na vrátenie hodnoty z , (MATCH ( vyhľadávacia hodnota , stĺpec na vyhľadávanie podľa , 0))Napríklad, ak našu zdrojovú tabuľku otočíme tak, že Názov planéty sa stane stĺpcom úplne vpravo, vzorec INDEX / MATCH stále bez problémov načíta zodpovedajúcu hodnotu z ľavého stĺpca.
Ďalšie tipy a príklad vzorca nájdete v návode Excel INDEX / MATCH.
6. Vzorec Excel INDEX na získanie 1 rozsahu zo zoznamu rozsahov
Ďalším inteligentným a výkonným využitím funkcie INDEX v programe Excel je možnosť získať jeden rozsah zo zoznamu rozsahov.
Predpokladajme, že máte niekoľko zoznamov s rôznym počtom položiek v každom z nich. Verte či neverte, môžete vypočítať priemer alebo súčet hodnôt v ľubovoľnom vybranom rozsahu pomocou jediného vzorca.
Najskôr vytvoríte pomenovaný rozsah pre každý zoznam; nech je to PlanétyD a MoonsD v tomto príklade:
Dúfam, že vyššie uvedený obrázok vysvetľuje dôvody názvov rozsahov : ) BTW. Mesiace tabuľka nie je ani zďaleka kompletná, v našej slnečnej sústave je známych 176 prirodzených mesiacov, samotný Jupiter ich má v súčasnosti 63, a to sa ešte počíta. Pre tento príklad som náhodne vybral 11, no... možno nie celkom náhodne - mesiacov s najkrajšími názvami : )
Ospravedlňte, prosím, odbočenie, späť k nášmu vzorcu INDEX-u. Predpokladajme, že PlanétyD je váš rozsah 1 a MoonsD je rozsah 2 a bunka B1 je miesto, kam ste vložili číslo rozsahu, môžete použiť nasledujúci vzorec Index na výpočet priemeru hodnôt vo vybranom pomenovanom rozsahu:
=AVERAGE(INDEX((PlanetsD, MoonsD), , , B1))
Dávajte pozor, že teraz používame referenčný formulár funkcie INDEX a číslo v poslednom argumente (area_num) hovorí vzorcu, ktorý rozsah má vybrať.
Na obrázku nižšie je area_num (bunka B1) nastavená na hodnotu 2, takže vzorec vypočíta priemerný priemer Mesiace pretože rozsah MoonsD je na 2. mieste v referenčnom argumente.
Ak pracujete s viacerými zoznamami a nechcete si pamätať súvisiace čísla, môžete použiť vnorenú funkciu IF, ktorá to urobí za vás:
=AVERAGE(INDEX((PlanetsD, MoonsD), , , IF(B1="planéty", 1, IF(B1="mesiace", 2))))
Vo funkcii IF používate niekoľko jednoduchých a ľahko zapamätateľných názvov zoznamov, ktoré majú používatelia namiesto čísel zadávať do bunky B1. Majte na pamäti, že pre správne fungovanie vzorca by mal byť text v bunke B1 presne taký istý (bez rozlišovania veľkých a malých písmen) ako v parametroch funkcie IF, inak váš vzorec Index vyhodí chybu #VALUE.
Aby bol vzorec ešte používateľsky prívetivejší, môžete pomocou funkcie Overenie údajov vytvoriť rozbaľovací zoznam s preddefinovanými názvami, aby ste zabránili chybám v písaní a preklepom:
Aby bol váš vzorec INDEX úplne dokonalý, môžete ho uzavrieť funkciou IFERROR, ktorá vyzve používateľa, aby vybral položku z rozbaľovacieho zoznamu, ak ešte nebol vykonaný žiadny výber:
=IFERROR(AVERAGE(INDEX((PlanetsD, MoonsD), , , IF(B1="planéta", 1, IF(B1="mesiac", 2)))), "Prosím, vyberte zoznam!")
Takto sa používajú vzorce INDEX v programe Excel. Dúfam, že vám tieto príklady ukázali spôsob, ako využiť potenciál funkcie INDEX vo vašich pracovných hárkoch. Ďakujem za prečítanie!