Otsingu- ja viitefunktsioonid on mõeldud näiteks kiiresti suurtest tabelistest andmete leidmiseks ja luua omavahelisi seoseid. Kõige selle teostamiseks on mitu erinevat funktsiooni, mis põhimõtteliselt võivad teha sama asja ning erinevus seisneb teostuses.

INDEX()

INDEX() funktsioon leiab massiivist reanumbri järgi lahtri sisu. Tegemist on rea ja veeru ristumiskohaga. Võtame näiteks nimede massiivi ja palume väljastada kolmanda rea sisu.

Kui andmete massiiv on mitmemõõtmeline ehk on rohkem veerge, siis on võimalik ära määrata ka veerg. Palume nüüd funktsioonil väljastada massiivist kolmanda rea ja teise veeru sisu.

Kuna otsingufunktsioonid tunduvad keskmisest raskemad, siis vaatame veel mõnda näidet. Võtame näiteks korterite nimekirja.

Eesmärk: kui olen sisestanud korteri numbri, siis INDEX() funktsioon väljastab omaniku nime. Selleks sisestame järgmise valemi:

=INDEX(A2:D9;F3;2)

Jah, korteri numbri peab ise sisestama. Aga mis siis saab, kui korteri number mida andmebaasis pole? Siis peaks kasutajat veast teavitama.

=IFERROR(INDEX(A2:D9;F3;2);”Viga korteri numbris!”)

MATCH()

MATCH() funktsiooni abil leiame otsitava väärtuse järjekorra numbri massiivis. Lisaks massiivile ja otsitavale väärtusele tuleb määrata otsitava väärtuse täpsus:

 

  • 1 või puudub – otsimassiivist otsitakse väiksemat väärtust, mis ei ületaks otsiväärtust
  • 0– etteantud ja otsitav väärtus peavad täpselt ühtima.
  • -1– otsitakse suurimat väärtust, mis ei oleks väiksem otsiväärtuset.

Vaatame uuesti nimede tabelit – soovin teada saada mitmes nimekirjas on “kalle” ning otsin täpset vastet.

Juhul kui tabel ei eelda täpseid väärtusi ja antud on vahemikud,  tuleb kasutada 1 või -1 täpsust. Kui võrdluse tüübiks on 1, peavad otsimassiivi elemendid olema kasvavas, tüübi -1 puhul kahanevas järjestuses. Alljärgnevas tabelis vahemikud 0, 100, 250 ja 500. Kui otsitav on 200, siis soovin saada teist tulemust, sest see ei ületa järgmist piiri. Selleks kasutan täpsust 1.

INDEX() ja MATCH()

Sagedamini kasutatakse INDEX() ja MATCH() funktsiooni pesastatuna. INDEX() vastutab ikka lahtri sisu eest ja MATCH() leiab INDEX() jaoks reanumbri. Keeruline? Vaatame näidet:

Tegemist on pisikese sõnaraamatuga. Kui mina sisestan tõlkelahtrisse ingliskeelse sõna, siis Excel “ütleb” mulle selle eestikeelse vaste.

=INDEX(A3:A6; MATCH(D2; B3:B6; 0))

 

Sõnaraamatus kasutasime ainult rea järgi otsimist. Aga vaatame tabelit, kus võtame kasutusele nii read kui veerud. Võtame näitena kümne aasta poiste ja tüdrukute sünnid.

Eesmärgiks on leida Soo ja Aasta sisestamisel sündinud laste arv. Valem tundub võibolla pikk ja lohisev aga kõik on loogiline. Nimelt nii read kui veerud leiame MATCH() abil.

VLOOKUP() ja HLOOKUP()

VLOOKUP() ja HLOOKUP() on olemuselt sarnased otsingufunktsioonid. VLOOKUP() otsib vertikaalses tabelis ning HLOOKUP() horisontaalses tabelis.

Valime õppimiseks tabeli, kus meil on tehtud klientidele tehtud Sooduka tabel.

Kui klient tellib üle 500€, saab ta 2% soodukat jne. Vaikimisi kasutab VLOOKUP() ja HLOOKUP() ligikaudset vastust. Massiivina tuleb ära märgistada kõik andmed ning veeru arv, kust vastus tuleb leida.

TÄPSE vastuse leidmiseks tuleb lisada funktsioonile neljas argument – FLASE.

LOOKUP()

LOOKUP() on  väga sarnane eelmistele ja isegi lihtsam. Selle ainuke puudus on, et otsitav massiiv peab olema järjestatud kasvavalt!

Kõige lihtsam on määrata otsitav ja massiiv kust soovid seda leida.

Juhul kui väärtused on erikohtades, siis on oluline jälgida, et andete arv oleks ikka sama.

 

Kõik otsingu- ja viitefunktsioonid

Funktsioon Kirjeldus
ADDRESS Annab vastuseks tekstiviite töölehe ühele lahtrile.
AREAS Annab vastuseks viites olevate alade arvu.
CHOOSE Annab vastuseks ühe väärtuse väärtuste loendist.
COLUMN Annab vastuseks viite veerunumbri.
COLUMNS Annab vastuseks viites olevate veergude arvu.
HLOOKUP Otsib väärtust massiivi esimesest reast ja annab vastuseks näidatud lahtri väärtuse.
HYPERLINK Loob otsetee, mis avab võrguserveris, sisevõrgus või Internetis talletatud dokumendi.
INDEX Otsib indeksi abil väärtuse viitest või massiivist.
INDIRECT Annab vastuseks tekstiväärtuse poolt viidatud viite.
LOOKUP Otsib väärtusi vektorist või massiivist.
MATCH Otsib väärtusi viitest või massiivist.
OFFSET Annab vastuseks viite kauguse antud viitest.
ROW Annab vastuseks viite reanumbri.
ROWS Annab vastuseks viites olevate ridade arvu.
RTD Laadib reaalajas alla andmed programmist, mis toetab COM-automatiseerimist
TRANSPOSE Annab vastuseks transponeeritud massiivi.
VLOOKUP Otsib massiivi esimesest veerust näidatud väärtusega lahtri ja annab vastuseks lahtri väärtuse, liikudes üle rea.

 

 


Allalaaditav PDF

Harjutus 13