Excel formula: FILTRIRANJE gornjih n vrijednosti s kriterijima -

Generička formula

=FILTER(data,(range>=LARGE(IF(criteria),n))*(criteria))

Sažetak

Da biste filtrirali podatke kako biste prikazali gornjih n vrijednosti koje zadovoljavaju određene kriterije, možete koristiti funkciju FILTER zajedno s funkcijama LARGE i IF. U prikazanom primjeru formula u F5 je:

=FILTER(data,(score>=LARGE(IF(group="b",score),3))*(group="b"))

gdje su podaci (B5: D16), skupina (C5: C16) i rezultat (D5: D16) imenovani rasponi.

Obrazloženje

Ova formula koristi funkciju FILTER za dohvaćanje podataka na temelju logičkog testa konstruiranog s funkcijama LARGE i IF. Rezultat su 3 najbolja rezultata u skupini B.

Funkcija FILTER primjenjuje kriterije s argumentom include. U ovom primjeru kriteriji se grade s logičkom logikom poput ove:

(score>=LARGE(IF(group="b",score),3))*(group="b")

Lijeva strana izraza cilja rezultate veće ili jednake 3. najvišem rezultatu u skupini B:

score>=LARGE(IF(group="b",score),3)

Funkcija IF koristi se kako bi se osiguralo da LARGE radi samo s rezultatima skupine B. Budući da imamo ukupno 12 rezultata, IF vraća niz s 12 rezultata poput ovog:

(FALSE;65;FALSE;80;FALSE;88;FALSE;76;FALSE;86;FALSE;83)

Primijetite da su jedini rezultati koji su preživjeli operaciju iz skupine B. Svi ostali rezultati su LAŽNI. Ovaj se niz vraća izravno u LARGE kao argument niza:

LARGE((FALSE;65;FALSE;80;FALSE;88;FALSE;76;FALSE;86;FALSE;83),3)

LARGE zanemaruje FALSE vrijednosti i vraća 3. najvišu ocjenu, 83.

Sada formulu možemo pojednostaviti na:

=FILTER(data,(score>=83)*(group="b"))

koji rješava:

=FILTER(data,(0;0;0;0;0;1;0;0;0;1;0;1))

Konačno, FILTER vraća zapise za Masona, Annie i Cassidyja, koji se prelijevaju u raspon F5: H7.

Poredaj rezultate po rezultatima

Prema zadanim postavkama, FILTER će vratiti odgovarajuće zapise istim redoslijedom kojim se pojavljuju u izvornim podacima. Da biste rezultate sortirali u opadajućem redoslijedu po rezultatima, izvornu formulu FILTER možete ugnijezditi u funkciju SORT ovako:

=SORT(FILTER(data,(score>=LARGE(IF(group="b",score),3))*(group="b")),3,-1)

Ovdje FILTER vraća rezultate izravno u funkciju SORT kao argument niza. Indeks sortiranja postavljen je na 3 (rezultat), a redoslijed sortiranja na -1 za silazni redoslijed.

Zanimljivi članci...