Az FKERES (VLOOKUP) több sebből vérzik, mégis az egyik leggyakrabban használt függvény. Az elmúlt években több cikket is írtam a témában, ezek közül kiemelném a kiváltásra használható INDEX/HOL.VAN párost, és az új, felgyorsított FKERES bejelentését. A gyenge pontok erősítésére a Microsoft kijött egy új, fejlesztett kereső függvénnyel, ami a keresztségben az XKERES (XLOOKUP) nevet kapta.
Az FKERES gyenge pontjai
- Csak a keresési tábla első oszlopában tud keresni, és csak tőle jobbra lévő oszlopból tudunk kérni információt
- Az oszlopindex argumentum konstans, ezért érzékeny a keresési táblázat szerkezetének (oszlopsorrendjének) változására
- Ha több oszlopból is kérünk vissza adatot, akkor mindannyiszor kerestetni kell a kulcsot
- Előbbi miatt nagy táblázatoknál jelentős lassulást eredményezhet
Az XKERES lényegi működése
Az XKERES tulajdonképpen úgy működik, mint a HOL.VAN – INDEX páros, azaz előbb megkeresi egy oszlopban a keresendő elemet, majd egy másikból visszaadja az ugyanannyiadikat. Emiatt tud jobbról és balról is visszaadni eredményt.
VAGY
Az XKERES újdonságai – 5 in 1
- Balról is ad eredményt
- Nem érzékeny az oszlopok elmozdulására
- Beépített hibakezelés (Nem kell HAHIBA)
- Fentről lefelé és lentről felfelé is tud keresni, ezáltal az első és az utolsó előfordulást is kérhetjük
- Vízszintesen is működik (Nem kell VKERES)
Az XKERES paraméterezése
XKERES ( keresett_érték; keresési_tömb; eredmény_tömb; [ha_nincs_találat]; [illesztési_mód]; [keresési_mód] )
Keresett érték | Amit keresünk |
Keresési tömb | 1 Dimenziós tömb, vízszintes vagy függőleges, ebben keres |
Eredmény tömb | 1 vagy 2 Dimenziós tömb,a keresési tömbbel azonos magasságú vagy szélességű, ebből adja vissza a találatot a megfelelő sorból vagy oszlopból |
Ha nincs találat [nem kötelező] | Mi legyen, ha nem talált |
Illesztési mód [nem kötelező] | 0 = pontos egyezés (alap), -1 = egyenlő vagy legközelebbi kisebb, 1 = egyenlő vagy legközelebbi nagyobb, 2 = Joker illesztés |
Keresési mód [nem kötelező] | 1 = lineáris, elölről hátra keres (alap), -1 = lineáris, hátulról előre keres, 2 = bináris keresés növekvő rendezettség, -2 = bináris keresés csökkenő rendezettség |
Alap működés
Mit keres, Hol keresse, Honnan adja vissza az ugyanannyiadik elemet, KÉSZ.
Nem kell egyezés típus, alapból lineáris keresést csinál, azaz pontos egyezőséget keres. Ha nem találja a keresett értéket, akkor a szokásos #HIÁNYZIK üzenetet adja.
Hibakezelés
Beleépítették a hibakezelést, nem kell HAHIBA (IFERROR) függvénybe ágyazni, külön paraméterben megadhatjuk, hogy mi legyen hiba esetén. Ide írhatunk konstans értéket vagy akár egy másik képletet.
Közelítő keresés
Jól látható, hogy a jobb oldali keresési tábla nincs rendezett állapotban, a bal oldali táblában mégis jók az eredmények. Az XKERES ötödik argumentumával megadhatjuk, hogy a legközelebbi kisebbet vagy nagyobbat kérjük vissza, ha nem talál pontos egyezést.
Keresési irány
A megadott kódú termék első és utolsó előfordulásához is könnyedén megkaphatjuk a kívánt értéket. Ehhez csupán a hatodik argumentumot kell megfelelően beállítani a fenti táblázat alapján.
Mi van, ha több tételt is át akarunk hozni?
Ez esetben reflexszerűen egymás után több XKERES-t használnánk. Ezt lehet ugyan, de akkor töbször keresnénk meg ugyanazt az elemet. Ha ez nem okoz sebesség problémákat (nagy keresési táblák esetén), akkor csak nyugodtan.
De az igazán optimális megoldás a keresés és az indexelés szétválasztása, azaz egy HOL.VAN vagy esetleg egy XHOL.VAN (mert ilyen is van ám!), majd utána néhány INDEX használata lenne.
Összefoglalás
A cikkben szereplő leírás és példák bevezető jellegűek, a cél az volt, hogy bemutassam ezt az új és remek függvényt. A benne rejlő potenciál távolabbra mutat, amit majd a további cikkekből lehet megtudni, például
- A találathoz tartozó egész sort/oszlopot vagy annak egy részét is vissza lehet kérni
- Kérhetünk több, nem összefüggő tételt is, így nem kell többszöri XKERES
- Lehet 2D keresést csinálni egymásba ágyazott XKERES-t használva
Lássuk az alapokat Videón is
Vélemény, hozzászólás?
Hozzászólás küldéséhez be kell jelentkezni.