Excel formula: Ime n-te največje vrednosti z merili -

Kazalo

Splošna formula

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

Povzetek

Če želite dobiti n-to največjo vrednost z merili, lahko uporabite INDEX in MATCH, funkcijo LARGE in filter, ustvarjen s funkcijo IF. V prikazanem primeru je formula v kopirani celici G5:

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

kjer so imena (B5: B16), skupina (C5: C16) in rezultat (D5: D16) imenovani obsegi. Formula vrne ime, povezano z 1., 2. in 3. najvišjo vrednostjo v skupini A.

Opomba: Ta formula matrike, ki jo je treba vnesti s tipko control + shift + enter, razen v Excelu 365.

Pojasnilo

Funkcija LARGE je preprost način, da dobite n-to največjo vrednost v območju:

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

V tem primeru lahko uporabimo funkcijo LARGE, da dobimo najvišjo oceno, nato pa rezultat kot "ključ" pridobimo s pripadajočim imenom z INDEX in MATCH. Upoštevajte, da pobiramo vrednosti za n iz območja F5: F7, da dobimo 1., 2. in 3. najvišjo oceno.

Vendar je v tem primeru zasuk v tem, da moramo razlikovati med rezultati v skupini A in skupini B. Z drugimi besedami, uporabiti moramo merila. To naredimo s funkcijo IF, ki se uporablja za "filtriranje" vrednosti, preden so ovrednotene z LARGE. Kot splošni primer lahko za pridobitev največje vrednosti (tj. 1. vrednosti) v obsegu2, kjer je obseg 1 = "A", uporabite naslednjo formulo:

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

Opomba: če IF uporablja ta način, je to matrična formula.

Če delamo od znotraj navzven, je prvi korak dobiti "1." največjo vrednost v podatkih, povezanih s skupino A s funkcijo LARGE:

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

V tem primeru je vrednost v F5 enaka 1, zato zahtevamo najvišji rezultat v skupini A. Ko se oceni funkcija IF, preskusi vsako vrednost v imenovani skupini obsegov . Imenovana ocena obsega je na voljo za vrednost_ef_true. To ustvari novo matriko, ki se vrne neposredno v funkcijo LARGE:

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

Upoštevajte, da so edini rezultati, ki preživijo filter, iz skupine A. LARGE nato vrne najvišji preostali rezultat, 93, neposredno funkciji MATCH kot iskalna vrednost. Zdaj lahko formulo poenostavimo na:

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

Zdaj lahko vidimo, da je funkcija MATCH konfigurirana, uporablja isto filtrirano matriko, kot smo jo videli zgoraj. Funkcija IF spet filtrira neželene vrednosti, del MATCH formule pa se razreši na:

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

Ker se 93 pojavi na tretjem mestu, MATCH vrne 3 neposredno v funkcijo INDEX:

=INDEX(name,3) // Hannah

Končno funkcija INDEX vrne ime v 3. vrstici "Hannah".

Z XLOOKUP

Za rešitev te težave je mogoče uporabiti tudi funkcijo XLOOKUP z enakim zgoraj pojasnjenim pristopom:

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

Kot zgoraj je LARGE konfiguriran za delo z matriko, ki jo filtrira IF, in vrne rezultat 93 v XLOOKUP kot vrednost iskanja:

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

Iskalno polje se ustvari tudi z uporabo IF kot filtra za ocene iz skupine A. Z vrnilno matriko, ki je navedena kot ime (B5: B16). XLOOKUP kot končni rezultat vrne "Hannah".

Opombe

  1. Če želite dobiti n-to vrednost z merili (tj. Omejite rezultate na skupino A ali B), boste morali formulo razširiti, da bo uporabila dodatno logiko.
  2. V programu Excel 365 je funkcija FILTER boljši način za dinamično uvrstitev zgornjih ali spodnjih rezultatov. Ta pristop bo samodejno obravnaval vezi.

Zanimive Članki...