Excel-formel: Namn på det nionde största värdet med kriterier

Innehållsförteckning

Generisk formel

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

Sammanfattning

För att få namnet på det nionde största värdet med kriterier kan du använda INDEX och MATCH, den STORA funktionen och ett filter som skapats med IF-funktionen. I exemplet som visas är formeln i cell G5, kopierad ned:

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

där namn (B5: B16), grupp (C5: C16) och poäng (D5: D16) heter områden. Formeln returnerar namnet associerat med de 1: a, 2: a och 3: e högsta värdena i grupp A.

Obs: Detta är en matrisformel som måste anges med kontroll + shift + enter, utom i Excel 365.

Förklaring

LARGE-funktionen är ett enkelt sätt att få det n: e största värdet i ett intervall:

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

I det här exemplet kan vi använda LARGE-funktionen för att få högsta poäng och sedan använda poängen som en "tangent" för att hämta det associerade namnet med INDEX och MATCH. Observera att vi plockar upp värdena för n från intervallet F5: F7 för att få 1, 2 och 3 högsta poäng.

Vridningen i detta fall är dock att vi måste skilja mellan poäng i grupp A och grupp B. Med andra ord måste vi tillämpa kriterier. Vi gör detta med IF-funktionen, som används för att "filtrera" värden innan de utvärderas med STORA. För att få det största värdet (dvs. 1: a värdet) i intervall 2 där intervall 1 = "A" kan du som ett generiskt exempel använda en sådan formel:

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

Obs: att använda IF på detta sätt gör detta till en matrisformel.

Arbetar inifrån och ut, det första steget är att få det "första" största värdet i de data som är associerade med grupp A med den STORA funktionen:

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

I detta fall, är värdet i F5 1, så vi ber om det bästa resultatet i grupp A. Om IF-funktionen utvärderas, den testar varje värde i det namngivna området gruppen . Det namngivna området poäng ges för värde_om_sant. Detta genererar en ny matris som returneras direkt till LARGE-funktionen:

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

Lägg märke till att de enda poängen som överlever filtret är från grupp A. LARGE returnerar sedan den högsta återstående poängen, 93, direkt till MATCH-funktionen som ett uppslagsvärde. Vi kan nu förenkla formeln till:

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

Nu kan vi se att MATCH-funktionen är konfigurerad med samma filtrerade array som vi såg ovan. IF-funktionen filtrerar bort oönskade värden igen, och MATCH-delen av formeln löser sig att:

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

Eftersom 93 visas i den tredje positionen, returnerar MATCH 3 direkt till INDEX-funktionen:

=INDEX(name,3) // Hannah

Slutligen returnerar INDEX-funktionen namnet i den tredje raden, "Hannah".

Med XLOOKUP

XLOOKUP-funktionen kan också användas för att lösa detta problem med samma metod som förklarats ovan:

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

Som ovan är LARGE konfigurerad för att fungera med en array filtrerad av IF och returnerar ett resultat av 93 till XLOOKUP som uppslagsvärde:

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

Uppslagsmatrisen skapas också genom att använda IF som ett filter för poäng från grupp A. Med returmatrisen som namn (B5: B16). XLOOKUP returnerar "Hannah" som slutresultat.

Anteckningar

  1. För att få namnet på nth-värdet med kriterier (dvs. begränsa resultaten till grupp A eller B) måste du utöka formeln för att använda ytterligare logik.
  2. I Excel 365 är FILTER-funktionen ett bättre sätt att lista topp- eller bottenresultat dynamiskt. Detta tillvägagångssätt kommer automatiskt att hantera band.

Intressanta artiklar...