Excel-formel: Få siste kamp -

Innholdsfortegnelse

Generisk formel

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

Sammendrag

For å få posisjonen til den siste kampen (dvs. siste forekomst) av en oppslagsverdi, kan du bruke en matriseformel basert på funksjonene IF, ROW, INDEX, MATCH og MAX. I eksemplet vist er formelen i H6:

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

Hvor "navn" er det navngitte området C4: C11.

Merk: dette er en matriseformel og må angis med kontroll + skift + enter.

Forklaring

Kjernen i denne formelen er at vi bygger en liste over radnumre for et gitt område, som samsvarer med en verdi, og deretter bruker MAX-funksjonen for å få det største radnummeret, som tilsvarer den siste samsvarende verdien. Vi bruker de navngitte områdene "navn" bare for enkelhets skyld.

Arbeidet fra innsiden og ut, denne delen av formelen vil generere et relativt sett med radnumre:

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

Resultatet av uttrykket ovenfor er en rekke tall som dette:

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

Legg merke til at vi får 8 tall, tilsvarende de 8 radene i tabellen. Se denne siden for detaljer om hvordan denne delen av formelen fungerer.

For formålet med denne formelen vil vi bare ha radnumre for samsvarende verdier, så vi bruker IF-funksjonen til å filtrere verdiene slik:

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

Dette resulterer i en matrise som ser slik ut:

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

Merk at denne matrisen fortsatt inneholder åtte elementer. Imidlertid er det bare radnumre der verdien i det navngitte området "navn" er lik "amy" som har overlevd (dvs. 1, 4, 7). Alle andre elementer i matrisen er FALSE, siden de ikke klarte den logiske testen i IF-funksjonen.

Til slutt leverer IF-funksjonen denne matrisen til MAX-funksjonen. MAX returnerer den høyeste verdien i matrisen, tallet 7, som tilsvarer det siste radnummeret der navnet er "amy". Når vi vet det siste samsvarende radnummeret, kan vi bruke INDEX til å hente en verdi på den posisjonen.

Nest sist osv.

For å få den nest til siste posisjonen, den tredje til den siste osv., Kan du bytte fra MIN-funksjon til STOR funksjon slik:

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

hvor k representerer "nth største". For eksempel, for å få den nest siste kampen i eksemplet ovenfor, kan du bruke:

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

Som før er dette en matriseformel og må legges inn med kontroll + skift + enter.

Interessante artikler...