Excel-formel: Få sidste match -

Indholdsfortegnelse

Generisk formel

(=MAX(IF(criteria,ROW(rng)-MIN(ROW(rng))+1)))

Resumé

For at få placeringen af ​​den sidste kamp (dvs. sidste forekomst) af en opslagsværdi, kan du bruge en matrixformel baseret på funktionerne IF, ROW, INDEX, MATCH og MAX. I det viste eksempel er formlen i H6:

(=MAX(IF(names=H5,ROW(names)-MIN(ROW(names))+1)))

Hvor "navne" er det navngivne område C4: C11.

Bemærk: dette er en matrixformel og skal indtastes med kontrol + skift + enter.

Forklaring

Kernen i denne formel er, at vi bygger en liste over rækkenumre for et givet interval, der matcher på en værdi, og derefter bruger MAX-funktionen til at få det største række nummer, der svarer til den sidste matchende værdi. Vi bruger kun de navngivne rækkevidde "navne" for nemheds skyld.

Når du arbejder indefra og ud, genererer denne del af formlen et relativt sæt rækkenumre:

ROW(names)-MIN(ROW(names))+1

Resultatet af ovenstående udtryk er en række numre som denne:

(1;2;3;4;5;6;7;8)

Bemærk, at vi får 8 tal svarende til de 8 rækker i tabellen. Se denne side for detaljer om, hvordan denne del af formlen fungerer.

Med henblik på denne formel ønsker vi kun rækkenumre til matchende værdier, så vi bruger IF-funktionen til at filtrere værdierne således:

IF(names=H5,ROW(names)-MIN(ROW(names))+1)

Dette resulterer i en matrix, der ser sådan ud:

(1;FALSE;FALSE;4;FALSE;FALSE;7;FALSE)

Bemærk, at dette array stadig indeholder otte elementer. Imidlertid er kun række numre, hvor værdien i det navngivne interval "navne" er lig med "amy", der har overlevet (dvs. 1, 4, 7). Alle andre elementer i matrixen er FALSE, da de mislykkedes den logiske test i IF-funktionen.

Endelig leverer IF-funktionen dette array til MAX-funktionen. MAX returnerer den højeste værdi i arrayet, tallet 7, der svarer til det sidste række nummer, hvor navnet er "amy". Når vi kender det sidste matchende række nummer, kan vi bruge INDEX til at hente en værdi på den position.

Sidste til sidst osv.

For at få den næstsidste position, den tredje til den sidste osv., Kan du skifte fra MIN-funktionen til den STORE funktion på denne måde:

(=LARGE(IF(criteria,ROW(rng)-MIN(ROW(rng))+1),k))

hvor k repræsenterer "nth største". For eksempel, for at få den næstsidste kamp i eksemplet ovenfor kan du bruge:

(=LARGE(IF(names=H5,ROW(names)-MIN(ROW(names))+1),2))

Som før er dette en matrixformel og skal indtastes med kontrol + skift + enter.

Interessante artikler...