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ů. 

původní data řazení

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:

hotová tabulka řazení

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.

řazení zápis funkce

3 Komentářů

  1. 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.

  2. Zná, prosím, někdo odpověď na výše uvedený kmentář? Děkuji

  3. 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.

Napsat komentář

Vaše emailová adresa nebude publikována.

*

smazat formulářOdeslat komentář