Excel vzorec: XLOOKUP najnovší podľa dátumu -

Všeobecný vzorec

=XLOOKUP(max,dates,results,,-1) // latest match by date

Zhrnutie

Ak chcete získať najnovšiu zhodu v množine údajov podľa dátumu, môžete použiť XLOOKUP v režime približnej zhody nastavením match_mode na -1. V zobrazenom príklade je vzorec v G5, skopírovaný nadol,:

=XLOOKUP(MAX(date),(item=F5)*date,price,,-1)

kde dátum (C5: C15), položka (B5: B15) a cena (D5: D15) sú pomenované rozsahy.

Vysvetlenie

XLOOKUP ponúka niekoľko funkcií, vďaka ktorým je mimoriadne vhodný pre komplikovanejšie vyhľadávanie. V tomto príklade požadujeme najnovšiu cenu položky podľa dátumu. Keby boli dáta zoradené vzostupne podľa dátumu, bolo by to veľmi jednoduché. V takom prípade sú však údaje netriedené.

V predvolenom nastavení XLOOKUP vráti prvú zhodu v množine údajov. Ak chcete získať poslednú zhodu, môžeme nastaviť voliteľný argument search_mode na hodnotu -1, čo spôsobí, že XLOOKUP vyhľadá výraz „last to first“. Tento prístup tu však nemôžeme použiť, pretože neexistuje záruka, že sa posledná cena položky zobrazí ako posledná.

Namiesto toho môžeme nastaviť voliteľný argument match_mode na -1, aby sa vynútila približná zhoda „presná alebo nasledujúca najmenšia“, a upraviť vyhľadávaciu hodnotu a vyhľadávacie pole, ako je vysvetlené nižšie. Vzorec v G5, skopírovaný nadol, je:

=XLOOKUP(MAX(date),(item=F5)*date,price,,-1)

Pri postupnom hľadaní argumentov je lookup_value najväčší (najnovší) dátum v dátach:

MAX(date) // get max date value

Pole lookup_array je odvodené od logického výrazu typu boolean:

(item=F5)*date

Porovnaním každej položky s hodnotou vo F5 „Pás“ získame pole hodnôt TRUE / FALSE:

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

kde PRAVÉ hodnoty predstavujú položky pre „opasok“. Toto pole funguje ako filter. Keď sa vynásobí hodnotami v pomenovanom dátume rozsahu , hodnoty TRUE / FALSE sa vyhodnotia na 1 a 0:

=(1;0;0;0;0;0;1;0;1;0;0)*date

Výsledkom je pole, ktoré obsahuje iba nuly a dátumy pre opasky:

=(43484;0;0;0;0;0;43561;0;43671;0;0)

Poznámka: sériové čísla sú platné dátumy programu Excel.

Toto pole sa dodáva priamo do XLOOKUPU ako argument lookup_array.

Return_array je pomenovaná cena rozsahu (D5: D15)

Nepovinný argument not_found nie je uvedený.

Match_mode je nastavený na -1 pre presnú zhodu alebo nasledujúcu najmenšiu položku.

Program XLOOKUP vyhľadáva maximálnu hodnotu dátumu prostredníctvom vyhľadávacieho poľa. Pretože pole už bolo filtrované, aby sa vylúčili dátumy, ktoré nie sú spojené s pásom, XLOOKUP jednoducho nájde najlepšiu zhodu (buď presný dátum, alebo najbližší najmenší dátum), ktorý zodpovedá poslednému dátumu.

Konečným výsledkom je cena spojená s posledným dátumom. Vzorec bude naďalej fungovať, keď sa dáta zoradia v ľubovoľnom poradí.

Zaujímavé články...