
Generieke formule
=LOOKUP(2,1/(item="hat"),price)
Samenvatting
Om de laatste prijs voor een product in een lijst op te zoeken, gesorteerd zodat de laatste items als laatste verschijnen, kunt u een formule gebruiken op basis van de functie ZOEKEN. In de voorbeeldshow is de formule in G7:
=LOOKUP(2,1/(item=F7),price)
waarbij item het benoemde bereik B5: B12 is, prijs het benoemde bereik D5: D12 is en de gegevens oplopend op datum worden gesorteerd.
Uitleg
De functie ZOEKEN gaat ervan uit dat de gegevens zijn gesorteerd en komen altijd bij benadering overeen. Als de opzoekwaarde groter is dan alle waarden in de opzoekmatrix, is het standaardgedrag "terugvallen" op de vorige waarde. Deze formule maakt gebruik van dit gedrag door een array te maken die alleen 1s en fouten bevat, en vervolgens opzettelijk te zoeken naar de waarde 2, die nooit zal worden gevonden.
Eerst wordt deze uitdrukking geëvalueerd:
item=F7
Als F7 "sandalen" bevat, is het resultaat een reeks TRUE en FALSE waarden zoals deze:
(FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE)
Deze array wordt geleverd als de deler voor 1:
1/(FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE)
De wiskundige bewerking dwingt de waarden TRUE en FALSE automatisch naar 1s en 0s, dus het resultaat is een andere array zoals deze:
(#DIV/0!;1;#DIV/0!;1;#DIV/0!;#DIV/0!;1;#DIV/0!)
rechtstreeks naar de functie ZOEKEN geretourneerd als het vector-opzoekargument.
Merk op dat de array slechts twee unieke waarden bevat: de fout bij delen door nul (# DIV / 0!) En het getal 1.
ZOEKEN zoekt in de array naar de waarde 2, waarbij de foutwaarden worden genegeerd. Als u 2 niet vindt, valt het terug naar de laatste 1, op positie 7 in de opzoekvector. ZOEKEN retourneert dan het 7e item in de resultaatvector (het benoemde bereik "prijs"), de waarde 15.
Lees over BigNum voor meer informatie over het concept van opzettelijk zoeken naar een waarde die nooit zal verschijnen.