Řazení pomocí funkcí LARGE a SMALL
S tímto tématem se setkáte na našich kurzech ExcelTown.
Aktuálně: kurzy můžete absolvovat jak online, tak prezenčně.
Tento příklad je o tom, jak pomocí funkcí LARGE a SMALL dynamicky řadit tabulku. Tedy řadit tak, aby se neuspořádaná data v jedné tabulce rovnou řadila do tabulky druhé a změny hodnot v první tabulce se rovnou promítaly do řazení.
V příkladu vyjdeme z těchto dat, kde jsou počty dosažených bodů a jména studentů.
Naším úkolem bude seřadit tyto studenty od toho, který má největší počet bodů, po toho nejméně úspěšného. Takto má vypadat výsledek:
Návod
Připravím si někde sloupeček, kde budou čísla od jedničky do tolika, kolik je studentů. Pak do vedlejších sloupečku zapíšu funkci LARGE (řazení od největšího), resp. SMALL (řazení od nejmenšího) v kombinaci s funkcí SVYHLEDAT.
Tato funkce bude mít v prvním parametru oblast, kde jsou původní neseřazená čísla, a ve druhém číslo z vedlejšího sloupce. Toto číslo vyjadřuje, kolikáté největší (nejmenší) číslo se právě na této pozici má zobrazit.
Funkce je zapsána takto:
- =SVYHLEDAT(LARGE(A:A;D:D);A:B;2;0)
Protože:
- LARGE najde ve sloupci A hodnotu, která je první, druhá, třetí... nejvyšší - podle toho, jaká číslo je v D.
- SVYHLEDAT pak tomuto číslu přiřadí jméno.
S tímto tématem se setkáte na našich kurzech ExcelTown.
Aktuálně: kurzy můžete absolvovat jak online, tak prezenčně.
Dobrý den,
jak se řeší situace v případě, že dva studenti dosáhnou stejného počtu bodů? Pokud bude mít Adam a Dana stejný počet bodů tak v tabulce pořadí bude dvakrát jméno Adam a Dana tam nebude vůbec. Děkuji.
Zná, prosím, někdo odpověď na výše uvedený kmentář? Děkuji
Pokusil jsem se pořešit pomocí fcí RANK a INDEX.
Sloupec C: Num;1;2; … ;6
D: Index;=E2*1000+C2; …
E: Poř.netř.;=RANK(A2;A:A); …
G: Pořadí;=RANK(I2;I:I); …
H: Student;=INDEX($B$2:$B$7;SMALL(D:D;C2)-(G2*1000)); …
I: Body;=LARGE(A:A;C2); …
Vzorce z řádku 2 rozkopírovat do dalších řádků, Pomocné sloupce C, D a E případně skrýt. Nejspíše to půjde ještě zjednodušit.
Tohle nefunguje, bohužel… při použití příkazu Svyhledat musí být vyhledávaná data bohužel vzestupně seřazena..
Upřesním – svyhledat vyžaduje řazení druhé tabulky jen v případě, že máte jako poslední argument PRAVDA (1, nevyplněno). Pokud zadáte jako poslední argument NEPRAVDA (0), pak toto pravidlo naštěstí naplatí. Nápověda funkce je v tomto trochu zavádějící.
Dobry den,
Resil nekdo vzorec , tak aby se vysledna data zobrazovala v jednom radku (cislo 1), (sloupec C,D,E atd)
To bude úplně analogické, jen místo sloupce D se to bude brát z nějakého řádku…