Excel-formel: Navn på den største verdien med kriterier -

Innholdsfortegnelse

Generisk formel

=INDEX(range,MATCH(LARGE(filtered_range,F5),filtered_range,0))

Sammendrag

For å få navnet på den nnd største verdien med kriterier, kan du bruke INDEX og MATCH, STOR funksjon og et filter opprettet med IF-funksjonen. I eksemplet vist er formelen i celle G5, kopiert ned,:

=INDEX(name,MATCH(LARGE(IF(group="A",score),F5),IF(group="A",score),0))

der navn (B5: B16), gruppe (C5: C16) og poengsum (D5: D16) er navngitte områder. Formelen returnerer navnet tilknyttet de første, andre og tredje høyeste verdiene i gruppe A.

Merk: Dette er en matriseformel som må legges inn med kontroll + skift + enter, unntatt i Excel 365.

Forklaring

STOR-funksjonen er en enkel måte å få den nest største verdien i et område:

=LARGE(range,1) // 1st largest =LARGE(range,2) // 2nd largest =LARGE(range,3) // 3rd largest

I dette eksemplet kan vi bruke STOR funksjon for å få høyest poengsum, og deretter bruke poengsummen som en "nøkkel" for å hente det tilknyttede navnet med INDEX og MATCH. Legg merke til at vi plukker opp verdiene for n fra området F5: F7, for å få 1., 2. og 3. høyeste poengsum.

Vendingen i dette tilfellet er imidlertid at vi trenger å skille mellom poeng i gruppe A og gruppe B. Med andre ord, vi må bruke kriterier. Vi gjør dette med IF-funksjonen, som brukes til å "filtrere" verdier før de evalueres med STOR. For å få den største verdien (dvs. første verdi) i område2 hvor område 1 = "A", som et generelt eksempel, kan du bruke en formel som denne:

LARGE(IF(range="A",range2),1)

Merk: å bruke IF på denne måten gjør dette til en matriseformel.

Arbeidet fra innsiden og ut, det første trinnet er å få den "første" største verdien i dataene som er knyttet til gruppe A med STOR funksjon:

LARGE(IF(group="A",score),F5)

I dette tilfellet er verdien i F5 er 1, så vi ber om den øverste stillingen i gruppe A. Når IF funksjon beregnes, det tester hver verdi i det navngitte området gruppe . Den navngitte området stillingen er anordnet for verdi_hvis_sann. Dette genererer en ny matrise som returneres direkte til STOR funksjon:

LARGE((79;FALSE;93;FALSE;83;FALSE;67;FALSE;85;FALSE;69;FALSE),1)

Legg merke til at de eneste resultatene som overlever filteret er fra gruppe A. LARGE returnerer deretter den høyeste gjenværende poengsummen, 93, direkte til MATCH-funksjonen som en oppslagsverdi. Vi kan nå forenkle formelen til:

=INDEX(name,MATCH(93,IF(group="A",score),0))

Nå kan vi se at MATCH-funksjonen er konfigurert, bruk samme filtrerte matrise som vi så ovenfor. IF-funksjonen filtrerer ut uønskede verdier igjen, og MATCH-delen av formelen løser seg å:

MATCH(93,(79;FALSE;93;FALSE;83;FALSE;67;FALSE;85;FALSE;69;FALSE),0)

Siden 93 vises i 3. posisjon, returnerer MATCH 3 direkte til INDEX-funksjonen:

=INDEX(name,3) // Hannah

Til slutt returnerer INDEX-funksjonen navnet i 3. rad, "Hannah".

Med XLOOKUP

XLOOKUP-funksjonen kan også brukes til å løse dette problemet ved å bruke samme tilnærming som forklart ovenfor:

=XLOOKUP(LARGE(IF(group="A",score),F5),IF(group="A",score),name)

Som ovenfor er LARGE konfigurert til å fungere med en matrise filtrert av IF, og returnerer et resultat på 93 til XLOOKUP som oppslagsverdi:

=XLOOKUP(93,IF(group="A",score),name) // Hannah

Oppslagsmatrisen opprettes også ved å bruke IF som et filter på score fra gruppe A. Med returmatrisen oppgitt som navn (B5: B16). XLOOKUP returnerer "Hannah" som det endelige resultatet.

Merknader

  1. For å få navnet på den nte verdien med kriterier (dvs. begrense resultatene til gruppe A eller B), må du utvide formelen for å bruke ekstra logikk.
  2. I Excel 365 er FILTER-funksjonen en bedre måte å liste opp topp- eller bunnresultater dynamisk. Denne tilnærmingen vil automatisk håndtere bånd.

Interessante artikler...