Excel VBA Seřadit

Existují různé způsoby třídění dat v aplikaci Microsoft Excel. Pod pásem karet Data Excel je ikona řazení, odkud můžete data uspořádat podle potřeby a získat výsledky. Proč je tedy třeba napsat komplexní kód VBA?

Musíte mít na paměti, že pokaždé, VBA kódy jsou tam automatizovat věci. Předpokládejme, že máte data, která se občas aktualizují. Možná každý den, týdenní, měsíční atd. A potřebujete svá data určitým tříděným způsobem. V takových případech lze použít funkci VBA SORT a vyjde jako užitečný nástroj pro vaši potřebu.

VBA má metodu Range.Sort pro třídění dat za vás. Kde Range určuje rozsah buněk, které chceme seřadit vzestupně nebo sestupně.

Syntaxe Range.Sort je uvedena níže:

Kde,

  • Key - Sloupec / Rozsah, který potřebujete seřadit. Př. Pokud chcete třídit buňky A1: A10, měli byste zmínit Range (A1: A10)
  • Pořadí - To je parametr, který umožňuje třídit data vzestupně nebo sestupně.
  • Záhlaví - Jedná se o parametr, který určuje, zda má váš sloupec / rozsah záhlaví nebo ne.

Tyto tři parametry jsou dostačující pro naše řízení. Existují však i další parametry, jako je MatchCase, SortMethod atd., Které můžete vždy prozkoumat a zjistit, jak fungují.

Jak používat funkci řazení Excel VBA?

Naučíme se, jak lze třídění VBA použít k třídění sloupců bez záhlaví, sloupce se záhlavími a více sloupců s příklady v Excelu.

Tuto šablonu VBA řazení Excel si můžete stáhnout zde - VBA třídění Excel šablony

Funkce řazení VBA - Příklad č. 1

Třídění jednotlivých sloupců bez záhlaví

Předpokládejme, že máte sloupec se jmény, jak je uvedeno níže, a vše, co potřebujete, je třídit tato data abecedně ve vzestupném nebo sestupném pořadí.

Podle níže uvedených kroků použijte funkci třídění ve VBA.

Krok 1: Definujte novou podpůrnou proceduru v rámci modulu a vytvořte makro.

Kód:

 Sub SortEx1 () End Sub 

Krok 2: Pomocí funkce Range.Sort můžete tento sloupec seřadit vzestupně.

Kód:

 Sub SortEx1 () Range ("A1", Range ("A1"). End (xlDown)). 

Zde dáváte rozsah počínaje buňkou A1 až po poslední použitou / neprázdnou buňku (viz funkce .End (xlDown)) funkci Range.Sort.

Krok 3: Nyní zadejte hodnoty argumentů.

Kód:

 Sub SortEx1 () Range ("A1", Range ("A1"). End (xlDown)). Key Key1: = Range ("A1"), Order1: = xlAscending, Header: = xlNo End Sub 

Jak jsme již diskutovali dříve, klíč, řád a záhlaví jsou důležité a nezbytné argumenty, které je třeba poskytnout. Jako počáteční rozsah sloupců jsme zadali Range („A1“), kterou musíme třídit. Pořadí je zadáno jako vzestupně a záhlaví jako ne (což znamená, že sloupec nemá záhlaví).

Tento kód zkontroluje všechny neprázdné buňky počínaje A1 a poté je seřadí vzestupně od buňky A1.

Krok 4: Spusťte tento kód ručně stisknutím klávesy F5 nebo Run a podívejte se na výstup.

Pokud to můžete porovnat s obrázkem na začátku tohoto příkladu, můžete vidět, že jména jsou řazena vzestupně.

Funkce řazení VBA - Příklad č. 2

Třídění jednoho sloupce s hlavičkou

Předpokládejme, že máte sloupec se záhlavím, jak je uvedeno níže. A chtěli jste tento sloupec seřadit vzestupně nebo sestupně.

Podle níže uvedených kroků použijte funkci třídění ve VBA.

Krok 1: Definujte nový dílčí postup v rámci nového modelu pro uložení makra.

Kód:

 Sub SortEx2 () End Sub 

Krok 2: Pomocí listů („Příklad č. 2“) určete, který list jsou vaše data.

Kód:

 Sub SortEx2 () Listy ("Příklad # 2") Konec Sub 

Krok 3: Použijte rozsah („A1“). Řadit před výše uvedený řádek kódu, aby se stala funkcí třídění.

Kód:

 Podřízené listy SortEx2 () („Příklad č. 2“). Rozsah („A1“) 

Krok 4: Poskytněte Key1 jako Range („A1“) pro třídění dat z buňky A1, Order1 za účelem třídění dat ve vzestupném nebo sestupném pořadí a Header jako Yes, aby systém věděl, že první řádek je záhlaví ve vaší data.

Kód:

 Sub SortEx2 () Listy ("Příklad č. 2"). Rozsah ("A1"). Klíč řazení1: = Range ("A1"), Order1: = xlAscending, Header: = xlYes End Sub 

Krok 5: Spusťte tento kód ručně stisknutím klávesy F5 nebo Run a podívejte se na výstup.

Zde jsou data z příkladu č. 2 daného sešitu Excel umístěna vzestupně, protože má záhlaví. Což znamená, že při třídění těchto dat je první řádek (který obsahuje Emp Name ) zanedbán, protože je považován za záhlaví těchto dat ve sloupci A.

Stejná data můžete také seřadit podle abecedy. Vše, co musíte udělat, je změnit pořadí z vzestupně na sestupně.

Krok 6: Změňte pořadí1 na sestupné, abyste data mohli seřadit sestupně.

Kód:

 Sub SortEx2 () Listy ("Příklad č. 2"). Rozsah ("A1"). Klíč řazení1: = Range ("A1"), Order1: = xlDescending, Header: = xlYes End Sub 

Krok 7: Spusťte kód a podívejte se na výstup, jak je uvedeno níže.

Vidíte, že data jsou řazena sestupně.

Funkce třídění VBA - Příklad č. 3

Třídění více sloupců podle záhlaví

Doposud jsme se zabývali tím, jak třídit data jednoho sloupce ve vzestupném nebo sestupném pořadí (bez záhlaví a záhlaví). Co když máte data, která je třeba třídit na základě více sloupců? Je možné napsat stejný kód?

Odpověď zní: „Ano, určitě to lze udělat!“

Předpokládejme, že máte níže uvedená data:

Chtěli jste třídit tato data nejprve podle Emp Name a pak podle Location. Postupujte podle níže uvedených kroků a zjistěte, jak můžeme kódovat ve VBA.

Krok 1: Definujte nový dílčí postup pro přidání makra pod nový modul.

Kód:

 Sub SortEx3 () End Sub 

Krok 2: Pomocí příkazu With With … End With přidejte více podmínek řazení v jedné smyčce.

Kód:

 Sub SortEx3 () S ActiveSheet.Sort End Sub 

Krok 3: Nyní pomocí SortFields.Add přidejte více podmínek řazení do stejného listu.

Kód:

 Sub SortEx3 () S ActiveSheet.Sort .SortFields.Add Key: = Range ("A1"), Order: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending End Sub 

Krok 4: Rozhodněte o rozsahu listu, který se má třídit, a záhlaví V dalším kroku.

Kód:

 Sub SortEx3 () S ActiveSheet.Sort .SortFields.Add Key: = Range ("A1"), Order: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending .SetRange Range ("A1" : C13 ") .Header = xlYes End Sub 

Krok 5: Použijte .Použijte pro použití všech těchto věcí pod příkazem a uzavřete psaní smyčky End With.

Kód:

 Sub SortEx3 () S ActiveSheet.Sort .SortFields.Add Key: = Range ("A1"), Order: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending .SetRange Range ("A1" : C13 ") .Header = xlYes. Použít konec s koncem Sub 

Krok 6: Spusťte tento kód ručně stisknutím klávesy F5 nebo Run a podívejte se na výstup.

V tomto kódu ActiveSheets.Sort pomáhá systému identifikovat list, pod kterým mají být data tříděna. SortFields.Add umožňuje přidat dvě podmínky řazení s jejich pořadí (vzestupně v obou případech). SetRange umožňuje systému nastavit rozsah od A1 do C13. Tento rozsah můžete také posunout nahoru. Příkazy Použít umožňují systému použít všechny změny provedené v Smyčce.

Nakonec získáte data, která jsou řazena podle Emp Name First a potom podle Location.

Co si pamatovat

  • Ve skupinovém rámečku VBA řazení můžete vytvořit pojmenované rozsahy namísto odkazů na buňky a použít je. Př. Pokud jste vytvořili pojmenovanou oblast pro buňku A1: A10 jako „EmpRange“, můžete ji použít pod Range.Sort like Range („EmpRange“).
  • Data můžete seřadit vzestupně i sestupně stejně jako v Excelu.
  • Pokud si nejste jisti, zda vaše data mají záhlaví nebo ne, můžete pomocí příkazu xlGuess v části záhlaví nechat systém hádat, zda je první řádek záhlaví nebo ne.

Doporučené články

Toto byl průvodce pro třídění Excel VBA. Zde jsme diskutovali VBA třídění a jak používat Excel VBA třídění funkce spolu s praktickými příklady a stahovatelné Excel šablony. Můžete si také prohlédnout naše další doporučené články -

  1. Rychlý průvodce Excel třídění podle čísla
  2. Použití funkce VBA Match
  3. Jak třídit sloupec v Excelu?
  4. VBA při opakování | MS Excel

Kategorie: