a KERES és az XKERES függvények bemutatása

2025-04-24    Excel 2021
fogalmak
Két függvény azonos funkcióval (keresés) vagy egy függvény két „felszereltségben”? Az utóbbi. Hétköznapi nyelven megfogalmazva a KERES a fapados, az XKERES a normál felszereltségű változat. Számítástechnikusan mondva pedig, a KERES a basic, a XKERES az advanced változat.
És mit keresnek ezek a függvények? Egy a felhasználó által megadott adatot. Ez az „ismert adat”, legalább is nekem, mert a program „keresett adat”-nak nevezi. Végül is joggal, mert mindkét függvény ezt az adatot keresi egy vektorban. A vektor egy egysoros vagy egy egyoszlopos tartomány illetve egy egysoros vagy egy egyoszlopos tömb. A vektor, amelyben a keresés folyik a „keresési vektor”. A keresés eredménye a „találat”.
A függvény ideiglenesen eltárolja a találat cellájának indexét a keresési vektorban. A számítástechnikában is használatos „index” szó a sorszám szinonimája. A cellák számozása egyessel kezdődik és felülről lefelé, illetve balról jobbra halad. A keresés tehát csak részeredményt ad, ezért használom az „ismert adat” nevet, a függvény „eredménye” egy másik vektor, az „eredmény vektor” a találat indexével azonos indexű cellájának tartalma.
a keresés módja
Maga a keresés összehasonlítással történik: az ismert adat és a keresési vektor elemeinek összehasonlítgatásával. A műveletsor három rendszer szerint működhet: alulról közelítő, azonosságot kereső és felülről közelítő.
a keresés módja
A közelítő keresés csak rendezett vektorban lehetséges: az alulról közelítő keresés növekvő, a felülről közelítő csökkenő rendezettséget igényel. A rendezést vagy nekünk kell elvégezni a függvény alkalmazása előtt vagy a függvény működésének részeként a program a héttérben, tehát a memóriában, sorrendbe állítja a keresési vektor elemeit.
példa a közelítő keresésre
Alulról közelítés - növekvő sorrend: Melyik az a legnagyobb szám a vektorban, amelyik kisebb (vagy egyenlő) a tizenegynél? A nyolc. Felülről közelítés - csökkenő sorrend: Melyik az a legkisebb szám a vektorban, amelyik nagyobb (vagy egyenlő) a tizenegynél? A tizenkettő. És ha arra is gondolunk, hogy a keresés felülről lefelé halad, akkor megértjük, hogy miért kell rendezettség a közelítő kereséshez.
De hát ez a közelítő keresés hülyeség! Nem lehet használni semmire! Valóban. Nem sokra. De van egy művelet, amihez viszont elengedhetetlen. Ez a művelet a kategorizálás. Egy értéktartományt szakaszokra osztunk és a szakaszoknak nevet adunk. Keresd meg, melyik szakaszba esik ez a szám, majd add eredményül a tartalmazó szakasz nevét! Mondanánk a kereső függvénynek, ha lenne füle.
keres függvény
A KERES függvényt használhatjuk egyvektoros, kétvektoros és mátrixos „üzemmódban”. Munkaterületileg :) A három használati mód eltérő argumentumokat igényel.
a KERES függvény argumentumai
A mátrix egy többsoros és többoszlopos tartomány illetve egy többsoros és többoszlopos tömb. Mindhárom üzemmódban a függvény alulról közelít, még szövegek esetén is (erre majd mutatok példát). És a függvény felhasználói rendezést igényel! A keresési vektor elemeinek emelkedő sorrendben kell állniuk. Ha az ismert adat szöveg, akkor ABC sorrendben.
keres függvény - egyvektoros változat
Az egyvektoros változatban a függvény eredménye a találat, vagyis az a legnagyobb szám a vektorban, amely kisebb vagy egyenlő az ismert adatnál.
a KERES függvény egyvektoros változata
Meg kellett állapítanunk, hogy az E4-es cellában szereplő szám megtalálható-e az A1:G1 tartományban. A képen látható képlet eredménye azt mutatja, hogy a KERES függvény találata nem volt azonos az ellenőrizendő számmal.
a KERES függvény eredménye #HIÁNYZIK hibaérték
Miért kaptunk hibaértéket, ha a százhetvenegyet ellenőriztettük? Azért, mert nincs a százhetvenegynél kisebb szám (alulról közelítés) az adott vektorban.
keres függvény - kétvektoros változat
Ez a KERES függvény leggyakrabban alkalmazott változata. Funkciója a kategorizálás: ez a szám (szöveg) melyik kategóriába tartozik.
KERES függvény kétvektoros változata
Hallgatók teljesítményét értékeltük pontszámaik (B2:B6) alapján. A KERES függvény a kategóriák rendezett „alsó” határértékei között kereste azt a legnagyobb számot, amely kisebb vagy egyenlő az adott pontszámnál. A függvény eredménye (C2:C6) a kategóriák neveit tartalmazó egysoros tartomány a találat indexével azonos sorszámú eleme.
Az előbb már láttuk, hogy a KERES #HIÁNYZIK hibaértéket ad eredményül, ha kereséskor a vektorban nem talál az ismert adatnál kisebb számot. És mi történik akkor, ha az eredmény vektornak nincs a találat indexével azonos sorszámú eleme vagy a cellája üres?
KERES függvény eredménye nulla
Itt, a képen az előző esetre látunk modellt: az eredmény vektornak nincs a találat indexével (4) azonos sorszámú eleme. Ebben az esetben a függvény nullát ad eredményül. Talán azt is érdemes rögzíteni, hogy a függvény nem követeli meg a keresési és az eredmény vektorok azonos elemszámát.
KERES függvény eredménye nulla
És akkor is nullát kapunk eredményül, ha az eredmény vektor a találat indexével (4) azonos sorszámú cellája üres.
Ahogy arról már szó volt, a keresési vektor elemeinek növekvő sorrendű rendezettségben kell állniuk. Ez az előírás a szövegeket tartalmazó vektorra is vonatkozik.
KERES függvény szöveg keresésére
Csak ABC sorrendbe rendezett keresési vektor esetén lehetünk biztosak az eredmény helyességében, mert a KERES függvény szövegek esetében is kategorizál. Íme!
KERES függvény szöveg keresésére
Most Péter átlagára voltunk kíváncsiak, de Péter nevű hallgató nincs a vektorban. Melyik az a keresztnév, amelyik közvetlenül Péter előtt állna, ha Péter szerepelne a rendezett vektorban? Petra. Tehát, ezért kaptuk eredményként Petra átlagát! És még nem rögzítettük, hogy a KERES nem különbözteti meg a kis- és a nagybetűket (Linda = LINDA).
Figyelem, figyelem! A KERES függvény nemcsak a vektorok tájolását nem vizsgálja, de a vektorok hosszát sem! Sőt, a keresési vektor rendezettségét sem ellenőrzi! Ezért a figyelmetlenségből eredő hibák észrevétlenül maradhatnak!
keres függvény - mátrixos változat
A mátrixos KERES a mátrix első oszlopában (sorában) keresi az ismert adatott, és a mátrix utolsó oszlopából (sorából) adja az eredményt, amelyet a kétvektoros változatéval azonos módon választ ki.
És tessék mondani, miért mátrixos, miért nem a táblázatos? Azért, mert a KERES függvény mátrixos változatának munkaterülete általában nem a teljes táblázat, hanem annak csak egy része. Egy többsoros és többoszlopos tartomány.
A mátrixos üzemmódban a KERES függvény első művelete a mátrix tájolásának meghatározása: akkor álló tájolású a mátrix, ha a sorok száma nagyobb vagy egyenlő mint az oszlopok száma.
KERES függvény mátrixos változata
Természetesen a mátrix első oszlopában (sorában) az adatoknak emelkedő sorrendben (ABC sorrendben) rendezetten kell állniuk. Másként fogalmazva a mátrixot tartalmazó táblázatot rendezni kell a mátrix első oszlopát (sorát) adó oszlop (sor) alapján.
az xkeres függvény
Ahogy a bevezetőben megállapítottuk az XKERES az advanced-KERES, akarom mondani az eXtended-KERES. Argumentum-listája három kötelező és három elhagyható elemből áll. A függvény három kötelező argumentuma azonos a kétvektoros KERES három argumentumával.
az XKERES függvény argumentumai
A XKERES nem igényli a keresési vektor rendezettségét, de a keresési- és az eredmény vektornak azonos tájolásúnak és elemszámúnak kell lennie. Mert, ha nem...
az XKERES függvény értékhibája
A negyedik elhagyható argumentummal kifejezést deklarálhatunk, amelyet a program csak akkor hajt végre, ha a keresés nem eredményez találatot.
az XKERES függvény negyedik argumentuma
Az ötödik, nem kötelező argumentummal a keresés módját deklarálhatjuk. A szokásos az azonosat kereső. Ezt nem kell megadnunk. Ha viszont az ismert adatban joker karakter akarunk használni, akkor azt egy kettes számmal kell jeleznünk. A kérdőjellel egy, a csillaggal meghatározatlan számú karaktert helyettesíthetünk. Ne felejtsük el, hogy a „meghatározatlan” értéktartománya nullával kezdődik!
az XKERES függvény joker karakterekkel: ? *
Alulról közelítő keresést mínusz egyes-, felülről közelítőt egyes számmal kérhetünk. A rendezéssel nem kell foglalkoznunk, azt is az XKERES intézi. A háttérben.
A hatodik elhagyható argumentummal a keresés iránya határozható meg. A keresési vektor elemeinek vizsgálata, ha nincs az argumentum megadva, felülről lefelé, vagy balról jobbra halad. Az iránynak, akkor van szerepe, ha az ismert adat utolsó előfordulását keressük.
az XKERES függvény, a keresés irányának meghatározása
De nem csak a keresés irányát fordíthatjuk meg a hatodik argumentummal, hanem a hagyományos lineáris keresés helyett kérhetünk félintervallumos végrehajtást is. Mit takar a két metódus? A szekvenciális, magyarul lineáris :) elindul a vektor egyik végétől és egyesével lépegetve, összehasonlítgatja a vektor elemeit az ismert adattal. Ha a tízezres vektor kilencezer-ötszázötvenötödik eleme egyezik az ismert adattal, akkor nincs szerencsénk.
A bináris, más néven félintervallumos algoritmus csak a vektor meghatározott elemeit vizsgálja. Az első lépésben a vektor közepén álló elemet hasonlítja össze az ismert adattal. Mivel a vektor rendezett ennek a vizsgálatnak az eredményéből már kiderül, hogy az ismert adatot a vektor melyik felében kell keresni. A következő lépésben ennek a félnek a közepén álló elemmel fogja a program összehasonlítani az ismert adatot. És ebből a vizsgálatból kiderül, hogy a félvektor melyik felétől kell a keresést folytatni. És így tovább.
A függvény második és a harmadik argumentuma nemcsak vektor, hanem tömb is lehet. Sőt a harmadik argumentumban mátrix is állhat. Ez esetben a függvény tömböt ad eredményül.
az XKERES függvény tömbös eredménye, a keresés irányának meghatározása
És ahogy látjuk az XKERES függvény sem különbözteti meg a kis- és a nagybetűket.
A KERES egyvektoros változatával magát a keresés eredményét, azaz a találatot kérdezhetjük le. Mivel az XKERES harmadik argumentuma kötelező, akkor ez a funkció elveszett! Nem, nem! Megmaradt, de csak egy kis kényelmetlenséggel hívható: a harmadik argumentumban is a keresési vektort kell megadnunk.
az XKERES függvény argumentumai egyvektoros funkcióban
...és legyen világbéke!
margitfalvi.arpad@proton.me