
Všeobecný vzorec
=LOOKUP(2,1/(item="hat"),price)
Zhrnutie
Ak chcete vyhľadať najnovšiu cenu produktu v zozname zoradenom podľa najnovších položiek, ktoré sa zobrazia ako posledné, môžete použiť vzorec založený na funkcii VYHĽADÁVANIE. V ukážke je vzorec v G7:
=LOOKUP(2,1/(item=F7),price)
kde položka je pomenovaný rozsah B5: B12, cena je pomenovaný rozsah D5: D12 a údaje sú zoradené vzostupne podľa dátumu.
Vysvetlenie
Funkcia LOOKUP predpokladá, že dáta sú zoradené, a vždy robí približnú zhodu. Ak je vyhľadávacia hodnota väčšia ako všetky hodnoty v vyhľadávacom poli, predvolené správanie je „vrátiť sa“ k predchádzajúcej hodnote. Tento vzorec využíva toto správanie na vytvorenie poľa, ktoré obsahuje iba 1 s a chyby, a potom zámerne hľadá hodnotu 2, ktorá sa nikdy nenájde.
Najskôr sa vyhodnotí tento výraz:
item=F7
Keď F7 obsahuje „sandále“, výsledkom je pole TRUE a FALSE hodnôt, ako je táto:
(FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE)
Toto pole je poskytované ako deliteľ 1:
1/(FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE)
Matematická operácia automaticky vynúti hodnoty TRUE a FALSE na 1 s a 0 s, takže výsledkom je ďalšie pole, ako je tento:
(#DIV/0!;1;#DIV/0!;1;#DIV/0!;#DIV/0!;1;#DIV/0!)
sa vrátil priamo k funkcii LOOKUP ako argument vyhľadávacieho vektora.
Všimnite si, že pole obsahuje iba dve jedinečné hodnoty: chyba delenia nulou (# DIV / 0!) A číslo 1.
LOOKUP hľadá v poli hodnotu 2 a ignoruje chybové hodnoty. Ak nenájde 2, spadne späť na poslednú 1, na pozíciu 7 vo vyhľadávacom vektore. LOOKUP potom vráti 7. položku vo vektore výsledkov (pomenovaný rozsah „cena“), hodnotu 15.
Ak si chcete prečítať viac o koncepcii zámerného hľadania hodnoty, ktorá sa nikdy neobjaví, prečítajte si o BigNum.