Lookup pentru a gasi ULTIMA valoare corespondenta

Informatii despre cum se utilizeaza Microsoft Excel 2003. Calcule, Formule, Functii, Tabele pivot, Analiza datelor, etc

Lookup pentru a gasi ULTIMA valoare corespondenta

Mesajde Dr.Excel » Joi Iul 09, 2009 5:53 pm

Am fost intrebat la un training cum as putea sa caut ultima aparitie a unei valori folosind Lookup:
De ex. sa da tabelul:

..........A.............B
1.....header.....header
2........9.............10
3........7.............12
4........9.............15
5........5.............16

Sa se gaseasca valoarea de pe coloana B corespunzatoare ultimei aparitii a numarului 9 de pe coloana A
Formula foloseste notiunea de vector Excel, tehnica prea putin cunoscuta (dar extrem de puternica)

=LOOKUP(2,1/(A2:A5=9),B2:B5)

Sa explic cum functioneaza. Expresia: (A2:A5=9) genereaza un vector (adica mai multe valori), cate o valoare pentru fiecare celula din A2:A5 comparata cu valoarea 9:

A2 = 9 = 9 = TRUE
A3 = 7 = 9 = FALSE
A4 = 9 = 9 = TRUE
A5 = 5 = 9 = FALSE

Orice comparatie intoarce true sau false. In cazul nostru: apar doi de true. Apoi se face impartirea: 1/ true sau false. Atentie true este 1 si FALSE este 0

A2 = 1 / TRUE = 1
A3 = 1 / FALSE = #DIV/0!
A4 = 1 / TRUE = 1
A5 = 1 / FALSE = #DIV/0!

Practic expresia este: se cauta valoarea 2 in lista de valori {1;#DIV/0!;1;#DIV/0!}. Cum 2 este mai mare decat oricare dintre nr listei, LOOKUP INTOARCE ultima valoare (valoarea #DIV/0! este ignorata)

=LOOKUP(2,{1;#DIV/0!;1;#DIV/0!),B2:B5)


..........A.............B
1.....header.....header
2........1.............10
3...#DIV/0!.......12
4........1.............15
5...#DIV/0!.......16


Adica ultima valoare este ultimul 1 adica A4, deci se lookup returneaza valoarea de pe aceeasi linie adica B4. ;)


=LOOKUP(2,1/(A2:A5=9),B2:B5) = 15
Formula generala pentru a gasi de ape aceeasi linie cu ULTIMA linie ce contine o VALOARE este:
=LOOKUP(2,1/(UNDE CAUT=CE CAUT),DE PE CE COLOANA RETURNEZ REZULTATUL)
Dr.Excel (Bogdan Tarla)
MVP, MCT,
MOS Master Instructor
IT Learning
Avatar utilizator
Dr.Excel
Site Admin
Site Admin
 
Mesaje: 420
Membru din: Sâm Ian 24, 2009 1:45 pm
Locaţie: Bucharest

Re: Lookup pentru a gasi ULTIMA valoare corespondenta

Mesajde stelea » Vin Iul 10, 2009 2:36 pm

am un excel in care aveam nevoie de aceasta 'cautare' dar renuntasem deja la idee. abia astept s-o incerc.

banuiesc ca merge si cu vlookup, nu?
Numa' bine,
*****A
Avatar utilizator
stelea
Moderator
Moderator
 
Mesaje: 75
Membru din: Mie Iul 01, 2009 11:40 am
Locaţie: Bucuresti

Re: Lookup pentru a gasi ULTIMA valoare corespondenta

Mesajde Dr.Excel » Vin Iul 10, 2009 4:25 pm

incearca si spune-ne si noua :)
Dr.Excel (Bogdan Tarla)
MVP, MCT,
MOS Master Instructor
IT Learning
Avatar utilizator
Dr.Excel
Site Admin
Site Admin
 
Mesaje: 420
Membru din: Sâm Ian 24, 2009 1:45 pm
Locaţie: Bucharest

Re: Lookup pentru a gasi ULTIMA valoare corespondenta

Mesajde stelea » Sâm Iul 11, 2009 1:56 am

Am reusti, cu mici modificari.
La mine vroiam sa pun formula exact in coloana A (coloana unde cautam), iar ca ultima integistrare imi vedea randul unde era si formula, asa ca imi returna mereu zero. Am rezolvat-o setand ca sfarsitul vectorului, randul dinaintea celui cu formula (sper ca m-am facut inteles :P).

Oricum, excelent artificiul! de bagat la cap...

Dar ca sa tin stacheta sus, am alta problema.

Inainte sa folosesc acest Lookup, aveam un Data Validation dintr-o lista de statusuri. Punand formula, imi cere sa scot restrictia de la Data Validation. Se poate sa am si formula, iar in cazul in care este vorba despre o intrare noua, pentru care nu se gaseste nici un corespondent anterior, sa imi ramana activa validare, adica sa pot selecta doar anumite valori pentru celula respectiva.

Numa' bine,
*****A
Numa' bine,
*****A
Avatar utilizator
stelea
Moderator
Moderator
 
Mesaje: 75
Membru din: Mie Iul 01, 2009 11:40 am
Locaţie: Bucuresti


Înapoi la Intrebari despre Excel 2003

Cine este conectat

Utilizatorii ce navighează pe acest forum: Niciun utilizator înregistrat şi 1 vizitator

cron