
Általános képlet
=XLOOKUP(max,dates,results,,-1) // latest match by date
Összegzés
Ahhoz, hogy a dátum szerinti adatsorozatban a legújabb egyezést kapja, használhatja az XLOOKUP hozzávetőleges egyezési módban, ha a match_mode értéket -1 értékre állítja. A bemutatott példában a G5 képlete, lemásolva:
=XLOOKUP(MAX(date),(item=F5)*date,price,,-1)
ahol a dátum (C5: C15), a tétel (B5: B15) és az ár (D5: D15) tartományokat neveznek meg.
Magyarázat
Az XLOOKUP számos olyan funkciót kínál, amelyek kivételesen jót tesznek a bonyolultabb keresésekhez. Ebben a példában egy cikk dátum szerinti legújabb árát szeretnénk kérni. Ha az adatokat dátum szerint növekvő sorrendben rendeznék, ez nagyon egyszerű lenne. Ebben az esetben azonban az adatokat nem rendezik.
Alapértelmezés szerint az XLOOKUP visszaadja az adatsor első egyezését. Az utolsó egyezés megszerzéséhez beállíthatjuk az opcionális search_mode argumentumot -1 értékre, hogy az XLOOKUP "utolsótól az elsőig" keressen. Ezt a megközelítést azonban itt nem használhatjuk, mert nincs garancia arra, hogy egy cikk legújabb ára utoljára jelenik meg.
Ehelyett beállíthatjuk az opcionális match_mode argumentumot -1-re, hogy a "pontos vagy következő legkisebb" hozzávetőleges egyezést kényszerítsük, és a keresési értéket és a keresési tömböt az alábbiakban leírtak szerint állíthatjuk be. A G5 képlete, lemásolva:
=XLOOKUP(MAX(date),(item=F5)*date,price,,-1)
Az argumentumokat egyenként feldolgozva a keresési_érték az adatok legnagyobb (utolsó) dátuma:
MAX(date) // get max date value
A lookup_array logikai logikai kifejezéssel származik:
(item=F5)*date
Összehasonlítva az egyes elemeket az F5 "Belt" értékével, TRUE / FALSE értékek tömbjét kapjuk:
(TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;TRUE;FALSE;FALSE)
ahol a TRUE értékek a "Belt" bejegyzéseket jelentik. Ez a tömb szűrőként működik. Ha megszorozza a megnevezett tartomány dátumának értékeivel, az IGAZ / HAMIS értékeket 1-re és 0-ra értékeli:
=(1;0;0;0;0;0;1;0;1;0;0)*date
Az eredmény egy tömb, amely csak nullákat és dátumokat tartalmaz az övekhez:
=(43484;0;0;0;0;0;43561;0;43671;0;0)
Megjegyzés: a sorozatszámok érvényes Excel dátumok.
Ez a tömb közvetlenül az XLOOKUP címre érkezik a lookup_array argumentumként.
A return_array a megnevezett tartományi ár (D5: D15)
A not_found választható argumentum nincs megadva.
A Match_mode értéke -1, a pontos egyezéshez vagy a következő legkisebb elemhez.
Az XLOOKUP a keresési tömbben keresi a maximális dátumértéket. Mivel a tömböt már kiszűrték, hogy kizárják a "Belt" -hez nem társított dátumokat, az XLOOKUP egyszerűen megtalálja a legjobb egyezést (vagy a pontos dátumot, vagy a következő legkisebb dátumot), amely megfelel a legújabb dátumnak.
A végeredmény a legutóbbi dátumhoz tartozó ár. A képlet továbbra is működik, ha az adatokat bármilyen sorrendben rendezik.