Rank v Excelu

Rank v Excelu představuje úlohu zjišťování pořadí hodnoty v nějakém výčtu (seznamu), který je v našem případě uveden na listu. Pro dané účely nabízí Excel funkci RANK, novodobě pak RANK.EQ (Excel 2010+) a RANG. AVG (Excel 2010+). A rovnou předesílám, že v případě sestavování výsledkových listin sportovních událostí jsou nám k ničemu. Druhá zmíněná je jen novodobým přepisem první, ta poslední se hodí pouze v případě zjišťování tzv. statistického pořadí. Pojďme si udělat malou analýzu.

RANK v Excelu - analýza
RANK v Excelu – analýza

Funkce COUNTIF nám vrací počet výskytů dané hodnoty ve výčtu. Následují vestavěné funkce typu RANK. Vzorce ve sloupci I představují náhradu funkce RANK.AVG pro ranější verze Excelu. Sloupce K a L jsou pak určeny pro sportovní výsledky (pořadí setříděných hodnot).

Rank pro sportovní výsledky

V první řadě si musíme uvědomit, je-li naším cíle uspořádání hodnot vzestupně nebo sestupně. Ve sportu o tomto rozhoduje hodnocení podle dosaženým časů (čím kratší, tím lepší, přímá úměra) nebo dosažených bodů (čím více, tím lépe, nepřímá úměra). Nejde vám to na rozum? Slovo “lepší” přeci v obou případech značí “nižší pořadí”. Úvaha se pak promítne do posledního parametru funkcí typu RANK (0 nebo 1). Jak je bohužel vidět, dané funkce neřeší duplicitní časy či body a tedy pořadí, kdy závodníci se stejným časem či skóre (v příkladu hodnota 50) obsadí stejnou příčku (což je nepříjemné hlavně ve smyslu neznámého počtu vyrobených medailí), a další v pořadí se umístí na pozici o jedničku vyšší. K tomu si už musíme dopomoci funkcí COUNTIF (pozor na adresování v jejích parametrech!) a následně buď maticovým vzorcem typu SUMA(KDYŽ(…)) nebo nematicovou formou a funkcí SOUČIN.SKALÁRNÍ. Předložené řešení přitom aplikujeme na setříděná data (funkce SMALL, resp. LARGE). Je to proto, že v praxi budou zpravidla nesetříděná data (časy, body) uložena do startovní listiny, zatímco naše pořadí zapíšeme vedle do výsledkové listiny. Ale to není vše. Podívejte se na trochu učesanou formu a sportovní výsledky.

RANK v Excelu - sportovní výsledky
RANK v Excelu – sportovní výsledky

Ať už tak či tak, nejprve v tabulce řešíme body (časy), následně pořadí, a nakonec doplňující informace o závodníkovi. A zde znovu narážíme na problém v případě duplicitního skóre (časů). Pokud se chcete probrat maticovými vzorci ve sloupcích G a K, doporučuji prostudovat článek Get nth match, kdy hledáme n-tý výskyt položky v seznamu. Další údaje k závodníkovi (startovní číslo, klub apod.) už je hračka pro funkci typu SVYHLEDAT. Tolik know-how k dané problematice. Ani to ovšem v praxi není konečná.

Při navrhování aplikace pro jeden sportovní klub jsem narazil na další problémy. Uvedené vzorce nemají rády prázdné buňky. A kde by se tam vzali? Nevíte předem, kolik účastníků soutěž či závod absolvuje (odhlášení ze závodu nemusí být řešeno náhradníkem). Čili na startovní listině se může objevit bílé místo. Proto je výhodné na startovní listině aplikovat definované názvy (dynamicky se odkazující pouze na vyplněná data). Aby toho nebylo málo, v průběhu závodu může dojít k diskvalifikaci nebo nedokončení závodu účastníkem (v zápisu času či bodů se najednou objeví text typu DNF). Zkrátka se může stát, že nakonec se umlátíte při ošetřování výjimek s funkcí KDYŽ… Přidejte si k tomu tisk výsledkových listin s proměnným počtem řádků, funkčnost přidělování startovních čísel, vyhodnocování přes skupiny (kluby, země, věkové kategorie) a máte o zábavu vystaráno :-)

Ke stažení
rank_sport.zip

Fráze pro Google
“Rank duplicate values with duplicate ranks without skipping numbers”