
Formula generică
=LOOKUP(2,1/(item="hat"),price)
rezumat
Pentru a căuta cel mai recent preț pentru un produs dintr-o listă, sortate astfel încât ultimele articole să apară ultimele, puteți utiliza o formulă bazată pe funcția CĂUTARE. În exemplul de prezentare, formula din G7 este:
=LOOKUP(2,1/(item=F7),price)
unde articolul este intervalul numit B5: B12, prețul este intervalul numit D5: D12, iar datele sunt sortate crescător după dată.
Explicaţie
Funcția LOOKUP presupune că datele sunt sortate și face întotdeauna o potrivire aproximativă. Dacă valoarea de căutare este mai mare decât toate valorile din matricea de căutare, comportamentul implicit este de a „reveni” la valoarea anterioară. Această formulă exploatează acest comportament prin crearea unui tablou care conține doar 1 și erori, apoi căutând în mod deliberat valoarea 2, care nu va fi găsită niciodată.
În primul rând, această expresie este evaluată:
item=F7
Când F7 conține „sandale”, rezultatul este o serie de valori ADEVĂRATE și FALSE ca aceasta:
(FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE)
Această matrice este furnizată ca divizor la 1:
1/(FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE)
Operația matematică constrânge automat valorile TRUE și FALSE la 1s și 0s, deci rezultatul este o altă matrice de genul acesta:
(#DIV/0!;1;#DIV/0!;1;#DIV/0!;#DIV/0!;1;#DIV/0!)
a revenit direct la funcția LOOKUP ca argument vector de căutare.
Observați că matricea conține doar două valori unice: eroarea de divizare la zero (# DIV / 0!) Și numărul 1.
LOOKUP caută în matrice valoarea 2, ignorând valorile erorii. Fără a găsi 2, acesta revine la ultimul 1, la poziția 7 din vectorul de căutare. LOOKUP returnează apoi cel de-al 7-lea element din vectorul de rezultat (intervalul denumit „preț”), valoarea 15.
Pentru a citi mai multe despre conceptul de a căuta în mod intenționat o valoare care nu va apărea vreodată, citiți despre BigNum.