Excel-formel: Sök senaste pris -

Generisk formel

=LOOKUP(2,1/(item="hat"),price)

Sammanfattning

För att leta upp det senaste priset för en produkt i en lista, sorterad så att de senaste artiklarna visas sist, kan du använda en formel baserad på LOOKUP-funktionen. I exemplets show är formeln i G7:

=LOOKUP(2,1/(item=F7),price)

där artikeln är det namngivna intervallet B5: B12, är priset det namngivna intervallet D5: D12 och data sorteras stigande efter datum.

Förklaring

LOOKUP-funktionen förutsätter att data sorteras och alltid matchar ungefär. Om uppslagsvärdet är större än alla värden i uppslagsmatrisen är standardbeteendet att "falla tillbaka" till föregående värde. Denna formel utnyttjar detta beteende genom att skapa en matris som endast innehåller 1s och fel och sedan medvetet letar efter värdet 2, som aldrig kommer att hittas.

Först utvärderas detta uttryck:

item=F7

När F7 innehåller "sandaler" är resultatet en matris med SANT och FALSKA värden så här:

(FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE)

Denna matris tillhandahålls som delaren till 1:

1/(FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE)

Matematikoperationen tvingar automatiskt de sanna och falska värdena till 1s och 0s, så resultatet är en annan array som denna:

(#DIV/0!;1;#DIV/0!;1;#DIV/0!;#DIV/0!;1;#DIV/0!)

återvände direkt till LOOKUP-funktionen som argument för uppslagsvektor.

Observera att matrisen bara innehåller två unika värden: fel med delning med noll (# DIV / 0!) Och siffran 1.

LOOKUP söker i arrayen efter värdet 2 och ignorerar felvärdena. Hittar inte 2, det faller tillbaka till den sista 1, vid position 7 i uppslagsvektorn. LOOKUP returnerar sedan det sjunde objektet i resultatvektorn (det angivna intervallet "pris"), värdet 15.

För att läsa mer om konceptet att avsiktligt leta efter ett värde som aldrig kommer att visas, läs om BigNum.

Intressanta artiklar...