
Obecný vzorec
=LOOKUP(2,1/(item="hat"),price)
souhrn
Chcete-li vyhledat nejnovější cenu produktu v seznamu seřazeném tak, aby se poslední položky zobrazovaly jako poslední, můžete použít vzorec založený na funkci VYHLEDAT. V ukázkové ukázce je vzorec v G7:
=LOOKUP(2,1/(item=F7),price)
kde položka je pojmenovaný rozsah B5: B12, cena je pojmenovaný rozsah D5: D12 a data jsou řazena vzestupně podle data.
Vysvětlení
Funkce LOOKUP předpokládá seřazení dat a vždy přibližnou shodu. Pokud je vyhledávací hodnota větší než všechny hodnoty ve vyhledávacím poli, výchozí chování je „přepnout zpět“ na předchozí hodnotu. Tento vzorec využívá toto chování vytvořením pole, které obsahuje pouze 1 s a chyby, a poté záměrně hledá hodnotu 2, kterou nikdy nenajdete.
Nejprve se vyhodnotí tento výraz:
item=F7
Když F7 obsahuje „sandály“, výsledkem je pole TRUE a FALSE hodnot, jako je tato:
(FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE)
Toto pole je poskytováno jako dělitel 1:
1/(FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE)
Matematická operace automaticky vynucuje hodnoty PRAVDA a NEPRAVDA na 1 s a 0 s, takže výsledkem je další pole, jako je toto:
(#DIV/0!;1;#DIV/0!;1;#DIV/0!;#DIV/0!;1;#DIV/0!)
vráceno přímo do funkce LOOKUP jako argument vektoru vyhledávání.
Všimněte si, že pole obsahuje pouze dvě jedinečné hodnoty: chyba dělení nulou (# DIV / 0!) A číslo 1.
LOOKUP vyhledá v poli hodnotu 2 a ignoruje chybové hodnoty. Když nenajde 2, spadne zpět na poslední 1, na pozici 7 ve vyhledávacím vektoru. LOOKUP pak vrátí 7. položku ve vektoru výsledků (pojmenovaný rozsah „cena“), hodnotu 15.
Chcete-li si přečíst více o konceptu záměrného hledání hodnoty, která se nikdy neobjeví, přečtěte si o BigNum.