Obsah
Dnes se blíže seznámíme se syntaxí a typickými způsoby použití nové dynamické funkce pole SORTBY. Dozvíte se, jak v Excelu pomocí vzorce provést vlastní třídění, náhodně seřadit seznam, uspořádat buňky podle délky textu a další.
Microsoft Excel nabízí řadu způsobů, jak seřadit textová data podle abecedy, data chronologicky a čísla od nejmenšího po největší nebo od největšího po nejmenší. K dispozici je také způsob řazení podle vlastních seznamů. Kromě běžné funkce Seřadit zavádí Excel 365 zcela nový způsob řazení dat pomocí vzorců - velmi pohodlné a neuvěřitelně jednoduché použití!
Funkce Excel SORTBY
Funkce SORTBY v aplikaci Excel slouží k seřazení jednoho rozsahu nebo pole na základě hodnot v jiném rozsahu nebo poli. Seřazení lze provést podle jednoho nebo více sloupců.
SORTBY je jednou ze šesti nových funkcí dynamického pole, které jsou k dispozici v aplikaci Excel pro Microsoft 365 a Excel 2021. Jejím výsledkem je dynamické pole, které se přelévá do sousedních buněk a automaticky se aktualizuje při změně zdrojových dat.
Funkce SORTBY má proměnný počet argumentů - první dva jsou povinné a další nepovinné:
SORTBY(pole, by_array1, [sort_order1], [by_array2, sort_order2],...)Pole (povinné) - rozsah buněk nebo pole hodnot, které se mají seřadit.
By_array1 (povinné) - rozsah nebo pole, podle kterého se má třídit.
Sort_order1 (nepovinné) - pořadí řazení:
- 1 nebo vynecháno (výchozí) - vzestupně
- -1 - sestupně
By_array2 / Sort_order2 , ... (nepovinné) - další dvojice polí / pořadí, které se použijí pro třídění.
Důležité upozornění! V současné době je funkce SORTBY k dispozici pouze v rámci předplatného Microsoft 365 a aplikace Excel 2021. V aplikacích Excel 2019, Excel 2016 a starších verzích není funkce SORTBY k dispozici.
Funkce SORTBY - 4 věci, které je třeba si zapamatovat
Aby vzorec SORTBY v aplikaci Excel fungoval správně, je třeba dbát na několik důležitých bodů:
- By_array argumenty by měly mít výšku jednoho řádku nebo šířku jednoho sloupce.
- Na stránkách pole a všechny by_array argumenty musí mít kompatibilní rozměry. Například při řazení podle dvou sloupců, pole , by_array1 a by_array2 by měly mít stejný počet řádků, jinak dojde k chybě #VALUE.
- Pokud je pole vrácené funkcí SORTBY konečným výsledkem (výstupem v buňce a nepředává se jiné funkci), Excel vytvoří dynamický rozptylový rozsah a naplní jej výsledky. Proto se ujistěte, že máte dostatek prázdných buněk dole a/nebo napravo od buňky, do které zadáváte vzorec, jinak dojde k chybě #SPILL.
- Výsledky vzorců SORTBY se automaticky aktualizují, kdykoli se změní zdrojová data. Nové položky přidané mimo pole, na které se vzorec odkazuje, však nejsou do výsledků zahrnuty, pokud neaktualizujete pole. pole Aby se odkazované pole automaticky rozšířilo, převeďte zdrojový rozsah na tabulku Excelu nebo vytvořte dynamický pojmenovaný rozsah.
Základní vzorec SORTBY v aplikaci Excel
Zde je typický scénář použití vzorce SORTBY v aplikaci Excel:
Předpokládejme, že máte seznam projektů se symbolem Hodnota pole. Chcete projekty seřadit podle jejich hodnoty na samostatném listu. Vzhledem k tomu, že ostatní uživatelé nepotřebují čísla vidět, raději byste neměli uvádět pole. Hodnota sloupec ve výsledcích.
Tento úkol lze snadno provést pomocí funkce SORTBY, pro kterou zadáte následující argumenty:
- Pole je A2:A10 - protože si nepřejete, aby se Hodnota sloupec zobrazit ve výsledcích, vynecháte jej z pole.
- By_array1 je B2:B10 - seřadit podle Hodnota .
- Sort_order1 je -1 - sestupně, tj. od nejvyššího po nejnižší.
Když si argumenty spojíme, získáme tento vzorec:
=SORTBY(A2:B10, B2:B10, -1)
Pro zjednodušení použijeme vzorec na stejném listu - zadáme ho do buňky D2 a stiskneme klávesu Enter. Výsledky se automaticky "rozlijí" do tolika buněk, kolik je potřeba (v našem případě D2:D10). Technicky je však vzorec pouze v první buňce a jeho vymazáním z D2 se vymažou všechny výsledky.
Při použití na jiném listu má vzorec následující tvar:
=SORTBY(List1!A2:A10, List1!B2:B10, -1)
Kde: List1 je pracovní list obsahující původní data.
Použití funkce SORTBY v aplikaci Excel - příklady vzorců
Níže najdete několik dalších příkladů použití SORTBY, které snad budou užitečné a užitečné.
Řazení podle více sloupců
Výše uvedený základní vzorec třídí data podle jednoho sloupce. Co když ale potřebujete přidat ještě jednu úroveň třídění?
Předpokládejme, že naše ukázková tabulka má dvě pole, Stav (sloupec B) a Hodnota (sloupec C) , chceme nejprve seřadit podle Stav abecedně a pak podle Hodnota sestupně.
Pro řazení podle dvou sloupců stačí přidat ještě jeden pár příkazů by_array / sort_order argumenty:
- Pole je A2:C10 - tentokrát chceme do výsledků zahrnout všechny tři sloupce.
- By_array1 je B2:B10 - nejprve seřadit podle Stav .
- Sort_order1 je 1 - řazení podle abecedy od A do Z.
- By_array2 je C2:C10 - pak seřaďte podle Hodnota .
- Sort_order2 je -1 - řazení od největšího po nejmenší.
Výsledkem je následující vzorec:
=SORTBY(A2:B10, B2:B10, 1, C2:C10, -1)
Který přeskupí naše data přesně podle našich pokynů:
Vlastní třídění v aplikaci Excel pomocí vzorce
Chcete-li data seřadit podle vlastního pořadí, můžete použít funkci Vlastní řazení aplikace Excel nebo tímto způsobem sestavit vzorec SORTBY MATCH:
SORTBY(pole, MATCH( range_to_sort , custom_list , 0))Při bližším pohledu na náš soubor dat vám pravděpodobně přijde vhodnější řadit projekty podle jejich stavu "logicky", např. podle důležitosti, než podle abecedy.
Abychom to mohli provést, vytvoříme nejprve vlastní seznam v požadovaném pořadí ( Probíhá , Dokončeno , Na počkání ), přičemž každou hodnotu napíšete do samostatné buňky v rozsahu E2:E4.
A pak pomocí výše uvedeného obecného vzorce dodáme zdrojový rozsah pro pole (A2:C10). Stav sloupec pro range_to_sort (B2:B10) a vlastní seznam, který jsme vytvořili pro custom_list (E2:E4).
=SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0))
Výsledkem je, že máme projekty seřazené podle jejich stavu přesně tak, jak potřebujeme:
Chcete-li řadit podle vlastního seznamu v opačném pořadí, vložte -1 do pole sort_order1 argument:
=SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0), -1)
A vy budete mít projekty seřazené opačným směrem:
Chcete navíc řadit záznamy v rámci jednotlivých stavů? Žádný problém. Jednoduše přidejte do vzorce ještě jednu úroveň řazení, například podle Hodnota (C2:C10) a určete požadované pořadí řazení, v našem případě vzestupné:
=SORTBY(A2:C10, MATCH(B2:B10, E2:E5, 0), 1, C2:C10, 1)
Velkou výhodou vzorce SORTBY oproti funkci Vlastní řazení aplikace Excel je, že vzorec se automaticky aktualizuje při každé změně původních dat, zatímco funkce SORTBY vyžaduje při každé změně vyčištění a nové řazení.
Jak tento vzorec funguje:
Jak již bylo zmíněno, funkce SORTBY aplikace Excel dokáže zpracovat pouze pole "sort by", jejichž rozměry jsou kompatibilní se zdrojovým polem. Protože naše zdrojové pole (C2:C10) obsahuje 9 řádků a vlastní seznam (E2:E4) pouze 3 řádky, nemůžeme jej přímo zadat do funkce SORTBY. by_array Místo toho použijeme funkci MATCH k vytvoření devítiřádkového pole:
MATCH(B2:B10, E2:E5, 0)
Zde používáme Stav (B2:B10) jako vyhledávací hodnoty a náš vlastní seznam (E2:E5) jako vyhledávací pole. Poslední argument je nastaven na 0, aby se hledala přesná shoda. Výsledkem je pole 9 čísel, z nichž každé představuje relativní pozici daného čísla. Stav hodnotu v seznamu vlastních položek:
{1;3;2;1;3;2;2;1;2}
Toto pole přechází přímo do by_array argumentu funkce SORTBY a přinutí ji umístit data v pořadí odpovídajícím prvkům pole, tj. nejprve položky reprezentované jedničkami, pak položky reprezentované dvojkami atd.
Náhodné třídění v aplikaci Excel pomocí vzorce
V dřívějších verzích aplikace Excel můžete provést náhodné třídění pomocí funkce RAND, jak je vysvětleno v tomto návodu: Jak náhodně seřadit seznam v aplikaci Excel.
V novém Excelu můžete použít výkonnější funkci RANDARRAY společně s funkcí SORTBY:
SORTBY( pole , RANDARRAY(ŘÁDKY( pole )))Kde: pole jsou zdrojová data, která chcete zamíchat.
Tento obecný vzorec funguje jak pro seznam tvořený jedním sloupcem, tak pro rozsah více sloupců.
Chcete-li například náhodně seřadit seznam v rozmezí A2:A10, použijte tento vzorec:
=SORTBY(A2:A10, RANDARRAY(ROWS(A2:A10)))
Chcete-li promíchat data v A2:C10 a zachovat řádky pohromadě, použijte tento příkaz:
=SORTBY(A2:C10, RANDARRAY(ROWS(A2:C10)))
Jak tento vzorec funguje:
Funkce RANDARRAY vytvoří pole náhodných čísel, které se použije pro třídění, a předá se v příkazu by_array Chcete-li určit, kolik náhodných čísel se má vygenerovat, spočítejte počet řádků ve zdrojovém rozsahu pomocí funkce ROWS a toto číslo "vložte" do funkce SORTBY. řádky argument RANDARRAY. To je vše!
Poznámka: Stejně jako její předchůdkyně je funkce RANDARRAY nestálá a při každém přepočítání listu generuje nové pole náhodných čísel. Výsledkem je, že vaše data budou při každé změně na listu přesměrována. Chcete-li automatickému přesměrování zabránit, můžete použít příkaz Vložit speciální > Hodnoty nahradit vzorce jejich hodnotami.
Seřadit buňky podle délky řetězce
Chcete-li seřadit buňky podle délky textových řetězců, které obsahují, použijte funkci LEN, která spočítá počet znaků v každé buňce, a vypočtené délky zadejte do funkce by_array argumentu SORTBY. sort_order lze nastavit na hodnotu 1 nebo -1 v závislosti na preferovaném pořadí řazení.
Seřazení podle textového řetězce od nejmenšího po největší:
SORTBY(pole, LEN(pole), 1)Seřazení podle textového řetězce od největšího po nejmenší:
SORTBY(pole, LEN(pole), -1)Zde je vzorec, který tento přístup demonstruje na reálných datech:
=SORTBY(A2:A7, LEN(A2:A7), 1)
Kde A2:A7 jsou původní buňky, které chcete seřadit podle délky textu vzestupně:
SORTBY vs. SORT
Ve skupině nových dynamických funkcí pole Excelu jsou dvě určené pro třídění. Níže uvádíme nejzásadnější rozdíly a podobnosti a také to, kdy je nejvhodnější každou z nich použít.
- Na rozdíl od funkce SORT nevyžaduje, aby pole "sort by" bylo součástí zdrojového pole, ani se nemusí objevit ve výsledcích. Pokud je tedy vaším úkolem seřadit rozsah na základě jiného nezávislého pole nebo vlastního seznamu, je vhodné použít funkci SORTBY. Pokud chcete seřadit rozsah na základě jeho vlastních hodnot, je vhodnější použít funkci SORT.
- Obě funkce podporují více úrovní třídění a obě lze řetězit společně s dalšími dynamickými a konvenčními funkcemi pole.
- Obě funkce jsou k dispozici pouze uživatelům aplikací Excel 365 a Excel 2021.
Nefunguje funkce Excel SORTBY
Pokud vzorec SORTBY vrátí chybu, je to pravděpodobně z jednoho z následujících důvodů.
Neplatné argumenty by_array
Na stránkách by_array argumenty musí mít velikost jednoho řádku nebo jednoho sloupce a musí být kompatibilní s velikostí pole pole argument. Například pokud pole má 10 řádků, by_array by měl obsahovat také 10 řádků. V opačném případě dojde k chybě #VALUE!.
Nesprávné argumenty sort_order
Na stránkách sort_order Argumenty mohou být pouze 1 (vzestupně) nebo -1 (sestupně). Pokud není zadána žádná hodnota, je výchozí pořadí SORTBY vzestupné. Pokud je zadána jiná hodnota, je vrácena chyba #VALUE!.
Není dostatek místa pro výsledky
Stejně jako každá jiná funkce dynamického pole i funkce SORTBY rozsype výsledky do automaticky měnitelného a aktualizovatelného rozsahu. Pokud není dostatek prázdných buněk pro zobrazení všech hodnot, vyhodí se chyba #SPILL!.
Zdrojový sešit je uzavřen
Pokud vzorec SORTBY odkazuje na jiný soubor aplikace Excel, musí být otevřeny oba sešity. Pokud je zdrojový sešit zavřený, dojde k chybě #REF!.
Vaše verze aplikace Excel nepodporuje dynamická pole.
Při použití v předdynamické verzi aplikace Excel vrací funkce SORT chybu #NAME?.
To je návod, jak používat funkci SORTBY v aplikaci Excel k vlastnímu třídění a dalším věcem. Děkuji vám za přečtení a doufám, že se uvidíme na našem blogu příští týden!
Cvičebnice ke stažení
Vzorce Excel SORTBY (.xlsx soubor)