Una dintre cele mai folosite si in aceeasi timp neintelese formule din Microsoft Excel este VLOOKUP-ul. Sunt foarte multi care stiu sa-l foloseasca pentru ca cineva candva le-a aratat unde sa dea click si ei repet aceeasi pasi insa fara a stii ce anume fac.

In ceea ce urmeaza o sa descriu principiile de functionare a formulei si cateva exemple de cum se poate optimiza rularea acesteia.

In prim pas ar trebui sa vedem ce este VLOOKUP?

VLOOKUP vine din engleza “vertical lookup” si inseamna cautare pe verticala.

Ce face VLOOKUP?

VLOOKUP cauta o valoare (de preferat unica) intr-o insiruire verticala (unul sub altul) de alte valori si reintoarce un atribut al acelei valori, corespunatoare a valorii cautate. Altfel zis cu un exemplu simplu, ai intr-o tabela un CNP si trebuie sa afli numele persoanei cu CNP-ul respectiv. Intr-o alta tabela ai o baza cu mai multi utilizatori, date precum CNP, nume, prenume si eventual alte informatii. In cazul de sus vei folosi CNP-ul ca valoare cautata si vei vrea sa iti zica numele si prenumele persoanei careia ii apartine.

Cum folosim, deci, VLOOKUP?

VLOOKUP raspunde practic la 4 intrebari, simple si usor de retinut.

  1. Ce cauti?
  2. Unde cauti?
  3. Ce vrei sa iti aduca inapoi?
  4. Cat de exacta vrei sa fie cautarea?

Odata ce retii intrebarile acestea o sa si intelegi principiul de functionare a formulei si vei putea folosi mereu fara probleme sau ajutor din partea altor colegi.

Cum se vede si pe poza de mai jos, formula cere 4 valori, valori, care vor raspunde perfect la cele 4 intrebari de mai sus.

vlookup

1. Ce cauti?

Prima valoare din lista este denumita “lookup_value” si reprezinta valoarea cautata de tine. Ca sa continuam cu exemplul de mai sus, CNP-ul pentru care vrei sa stii cui apartine. Aici va trebui mereu sa mentionezi o singura valoare. Pentru ca nu-i asa ca nu poti cauta mai multe deodata? Logic cand vrei sa gasesti numele apartinatoare mai multor CNP-uri, vei cauta unul cate unul.

La “lookup_value” mereu deci va trebui sa mentionezi O SINGURA VALOARE.

2. Unde cauti?

A doua valoare din cele 4, este “table_array” si reprezinta locul unde cauti valoarea ta (CNP-ul). Continuand exemplul de mai sus, “table_array” va contine lista de CNP-uri din baza de care dispui. Ca si in viata de zi cu zi cand cauti un CNP, cauti intr-o lista de valori, pana in gasesti pe aceasta.  O mentiune foarte importanta aici este ca valoarea cautata va fi cautata DOAR in prima coloana din intervalul mentionat. Chiar daca selectia unde cauti include 1-2 sau mai multe coloane, formula va cauta mereu si fara exceptie doar in PRIMA coloana valoarea.

La “table_array” mereu va trebui sa mentionezi O LISTA, sau altfel zis UN INTERVAL de valori unde sa se faca cautarea.

3. Ce vrei sa iti aduca inapoi?

A treia valoare din lista, este “col_index_num”, adica numarul coloanei in care se gaseste atributul pe care vrei sa iti intoarca. Intrebarea a doua si a treia sunt strans legate una de alta. Cand mentionezi lista sau intervalul de valori trebuie sa incluzi si coloana sau coloanele de unde vrei sa iti aduca inapoi atributul dorit. In continuare exemplului, vei avea in formula “table_array” coloanele cu CNP, nume si prenume, deci in total 3 coloane, iar pentru “col_index_num” vei avea odata 2, sa iti aduca inapoi numele, apoi 3, sa iti aduca inapoi si prenumele persoanei.

La “col_index_num” mereu vei avea UN NUMAR, care reprezinta numarul coloanei (din selectia facuta la “table_array”) din care vrei sa iti aduca inapoi atributul cautat.

4. Cat de exacta vrei sa fie cautarea?

A patra valoare este “range_lookup”, adica o valoare de 1 sau 0, TRUE sau FALSE, care raspunde la intrebarea “Vrei sa faci cautarea aproximativa?”, Da sau Nu? Ce inseamna cautarea aproximativa? Inseamna ca se vor lua in calcul si rezultatele care doar seamana cu ceea ce cauti tu. In cazul nostru, daca luam ca exemplu CNP-ul 1910101111111  si ii permitem cautarea aproximativa, formula va incepe sa caute CNP-ul nostru; in schimb se va multimi si cu rezultate asemanatoare celei cautate, de exemplu: 1920101111111 sau 2910101111111 etc.

La “range_lookup” va trebui mereu mentionat, 1 sau 0, corespunzatoare valorilor, TRUE sau FALSE. Personal ce pot sa iti spun este ca in marea majoritate a cazurilor o sa vrei sa eviti cautarea aproximativa, deci vei avea nevoie sa folosesti 0, sau FALSE, pentru a te asigura ca rezultatele aduse pentru ceea ce cauti sunt cat se poate de reale.

Acestea fiind zise sunt totusi si cateva recomandari de care ar trebui sa tii cont cand folosesti VLOOKUP.

  1. Valoarea cautata ar trebui sa fie un identificator unic. Formula va functiona (partial incorect) si in situatia in care identificatorul nu este unic, dar o sa aiba niste greseli.  Ca sa pot sa exemplific cum trebuie inteleasa regula asta, ma voi folosi de o varianta a exemplului nostru de mai sus. Stim ca un CNP poate sa ii apartina unui singur om, in schimb cu aceeasi nume pot exista mai multe persoane. De exemplu, acum avem aceeasi baza ca mai devreme: numele, CNP-ul si alte informatii extra. Stim ca numele persoanei a carei CNP vrem sa aflam este Ion Popescu si trebuie sa cautam dupa nume, CNP-ul lui. Daca in lista noastra exista mai multe persoane cu numele de Ion Popescu, VLOOKUP ne va aduce doar CNP-ul primei persoane din lista si se va opri din cautat, astfel existand posibilitatea sa trecem cu vederea peste alte posibile rezultate corecte.
  2. Daca lista de valori in care trebuie efectuata cautarea este mai mare de cateva mii de linii sau daca sunt mai mult de cateva mii de linii de valori de cautat este recomandat sa ordonezi (nu conteaza daca crescator sau descrescator) listele. Ordonarea ar trebui facuta bazata pe identificatorul unic. Daca cauti CNP-uri, ar fi recomandat ca lista in care cauti sa fie ordonata crescator (sau descrescator) dupa CNP, astfel formula va putea sa efectueze mai eficient si mai repede cautarea.
  3. Foarte important de tinut minte regula de la intrebarile 2 si 3: Se pot selecta mai multe coloane in care sa se faca cautarea, respectiv din care sa se aduca inapoi rezultatul dorit, dar formula va cauta valoarea mereu doar in prima coloana.