VBA na triedenie stĺpcov v programe Excel (4 metódy)

  • Zdieľajte To
Hugh West

Triedenie v programe Excel pomocou VBA , musíte použiť Range.Sort V tomto článku vám ukážeme, ako zoradiť stĺpec v programe Excel pomocou Range.Sort metóda VBA .

Stiahnite si pracovný zošit

Bezplatný cvičný zošit Excel si môžete stiahnuť odtiaľto.

Zoradenie stĺpca pomocou VBA.xlsm

Metóda Range.Sort v programe Excel VBA

Range.Sort metóda v VBA triedi rozsah hodnôt v programe Excel. Tu Rozsah je objektová premenná, ktorá určuje rozsah buniek, ktoré chceme zoradiť vo vzostupnom alebo zostupnom poradí.

Nižšie sú uvedené parametre, ktoré je potrebné poznať pri práci s touto metódou.

Parameter Povinné/ voliteľné Typ údajov Popis
Kľúč Voliteľné Variant Určuje rozsah alebo stĺpec, ktorého hodnoty sa majú zoradiť.
Objednávka Voliteľné XlSortOrder Určuje poradie, v ktorom sa triedenie vykoná.
  • xlVzostupné = Zoradenie vo vzostupnom poradí.
  • xlZostupne = Zoradenie v zostupnom poradí.
Záhlavie Voliteľné XlYesNoGuess Určuje, či prvý riadok obsahuje hlavičky alebo nie.
  • xlNo = Keď stĺpec nemá žiadne záhlavie; Predvolená hodnota.
  • xlYes = Keď majú stĺpce hlavičky.
  • xlHádajte = Umožnenie programu Excel určiť záhlavia.

4 metódy implementácie VBA na triedenie stĺpcov v programe Excel

V tejto časti sa dozviete, ako zoradiť jeden stĺpec s hlavičkou a bez hlavičky , viacero stĺpcov so záhlaviami a bez nich a ako zoradiť len dvojitým kliknutím na záhlavie v stĺpci v programe Excel.

1. Vloženie VBA na triedenie jedného stĺpca bez záhlavia v programe Excel

Ak chcete zoradiť jeden stĺpec v pracovnom hárku Excelu pomocou VBA potom postupujte podľa nasledujúcich krokov.

Toto je náš stĺpec, ktorý budeme triediť pomocou VBA kód.

Kroky:

  • Tlač Alt + F11 na klávesnici alebo prejdite na kartu Vývojár -> Visual Basic otvoriť Editor jazyka Visual Basic .

  • Vo vyskakovacom okne kódu kliknite na paneli ponúk na položku Vložiť -> Modul .

  • Skopírujte nasledujúci kód a vložte ho do okna kódu.
 Sub SortSingleColumnWithoutHeader() Range("B5:B15").Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub 

Váš kód je teraz pripravený na spustenie.

Tu,

  • Key1:=Range("B5") → Špecifikované B5 aby kód vedel, ktorý stĺpec má triediť.
  • Order1:=xlAscending → Zadané poradie ako xlVzostupné ak chcete stĺpec zoradiť vzostupne. Ak chcete stĺpec zoradiť zostupne, napíšte xlZostupne namiesto toho.
  • Hlavička:= xlNo → Keďže náš stĺpec nemá žiadne záhlavie, tak sme ho špecifikovali pomocou xlNo možnosť.

  • Tlač F5 na klávesnici alebo na paneli ponúk vyberte Run -> Run Sub/UserForm Môžete tiež jednoducho kliknúť na malá ikona Play na paneli podmenu, aby ste makro spustili.

Uvidíte, že váš stĺpec je teraz zoradené vzostupne .

Všimnite si, že tu sme rozsah údajov definovali ručne ako Rozsah("B5:B15") .

Ak chcete zmeniť údaje pridaním alebo odstránením hodnôt, môžete implementovať nasledujúci kód, ktorý sa automaticky aktualizuje na základe buniek v súbore údajov.

 Sub SortSingleColumnWithoutHeader() Range("B5", Range("B5").End(xlDown)).Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub 

Všimnite si, že namiesto ručného definovania rozsahu pomocou Rozsah("B5:B15") , sme napísali, Rozsah( "B5", Range("B5"). End(xlDown)) .

Týmto spôsobom sa stĺpec zoradí na základe poslednej postupne vyplnenej bunky. Ak sú v ňom prázdne bunky, údaje sa budú brať do úvahy len po prvú prázdnu bunku.

Čítajte viac: VBA na triedenie tabuľky v programe Excel (4 metódy)

2. Vloženie makra VBA na triedenie jedného stĺpca so záhlavím

V predchádzajúcej časti sme mali súbor údajov s jedným stĺpcom bez hlavičky, ale teraz máme a stĺpec so záhlavím .

Tentoraz sa naučíme, ako ho triediť pomocou Makro VBA .

Kroky:

  • Rovnaký spôsob ako predtým, otvoriť Editor jazyka Visual Basic z Vývojár karta a Vložte a Modul v okne kódu.
  • V okne kódu skopírujte nasledujúci kód a vložte ho.
 Sub SortSingleColumnWithHeader() Range("B5:B16").Sort Key1:=Range("B5"), Order1:=xlDescending, Header:=xlYes End Sub 

Váš kód je teraz pripravený na spustenie.

Tu,

  • Key1:=Range("B5") → Špecifikované B5 aby kód vedel, ktorý stĺpec má triediť.
  • Order1:=xlDescending → Tentoraz zoradíme stĺpec zostupne, takže zadáme poradie ako xlZostupne .
  • Hlavička:= xlYes → Keďže náš stĺpec má tentoraz hlavičku, tak sme ju zadali pomocou xlYes možnosť.

  • Spustiť tento kód a dostanete stĺpec so záhlavím zoradeným zostupne .

Prečítajte si viac: Ako triediť ListBox pomocou VBA v programe Excel (kompletný sprievodca)

Podobné čítanie:

  • Ako triediť IP adresy v programe Excel (6 metód)
  • [Vyriešené!] Excel nefunguje (2 riešenia)
  • Ako pridať tlačidlo triedenia v programe Excel (7 metód)
  • Triedenie rozsahu pomocou VBA v programe Excel (6 príkladov)
  • Ako triediť podľa názvu v programe Excel (3 príklady)

3. Makro VBA na triedenie viacerých stĺpcov so záhlavím alebo bez neho

Môžete tiež triedenie viacerých stĺpcov v súbore údajov pomocou kódu VBA.

Kroky:

  • Ako už bolo uvedené, otvorené Editor jazyka Visual Basic z Vývojár karta a Vložte a Modul v okne kódu.
  • V okne kódu skopírujte nasledujúci kód a vložte ho.
 Sub SortMultipleColumnsWithHeaders() With ActiveSheet.Sort .SortFields.Add Key:=Range("B4"), Order:=xlAscending .SortFields.Add Key:=Range("C4"), Order:=xlAscending .SetRange Range("B4:D15") .Header = xlYes .Apply End With End Sub 

Váš kód je teraz pripravený na spustenie.

Tu,

.SortFields.Add Kľúč:=Range("B4"), Poradie:=xlAscending

.SortFields.Add Kľúč:=Range("C4"), Poradie:=xlAscending

Týmito dvoma riadkami definujeme Bunka B4 a C4 na triedenie dva stĺpce, ktoré sú s nimi spojené na stránke vzostupné poradie .

Keďže v našom súbore údajov máme hlavičky, zadali sme Hlavička = xlYes , inak by sme napísali Hlavička = xlNo vnútri kódu.

  • Spustiť tento kód a dostanete stĺpce so záhlavím zoradené vzostupne .

4. Makro na triedenie údajov dvojitým kliknutím na záhlavie v programe Excel

Ak chcete údaje jednoducho zoradiť podľa dvojité kliknutie na záhlavie , môžete to urobiť pomocou VBA kód.

Kroky:

  • Kliknite pravým tlačidlom myši na stránku na karta listu .
  • V zobrazenom zozname možností kliknite na Zobraziť kód .
  • Zobrazí sa okno kódu, do ktorého skopírujte a vložte nasledujúci kód.
 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim iRange As Range Dim iCount As Integer iCount = Range("B4:D15").Columns.Count Cancel = False If Target.Row = 4 And Target.Column <= iCount Then Cancel = True Set iRange = Range(Target.Address) Range("B4:D15").Sort Key1:=iRange, Header:=xlYes End If End Sub 
  • Uložiť kód.

  • Teraz sa vráťte na pracovný list, ktorý vás zaujíma, a ak dvakrát kliknite na záhlavie uvidíte, že sa stĺpce reorganizujú.

Prečítajte si viac: Ako triediť a filtrovať údaje v programe Excel (kompletný návod)

Čo si treba zapamätať

  • Môžete vytvoriť pomenovaný rozsah a použiť ho namiesto toho, keď odovzdávate rozsah odkazov na bunky vo vnútri Triediť Napríklad, ak chcete zoradiť rozsah A1:A10 , namiesto toho, aby ste ho odovzdávali zakaždým vo vnútri kódu, môžete vytvoriť jeho pomenovaný rozsah, ako napríklad " SortRange " a použite ho s Range.Sort metóda ako Rozsah("SortRange") .
  • Ak si nie ste istí, či váš súbor údajov má alebo nemá hlavičky, môžete to nechať určiť systém pomocou príkazu xlHádajte parameter.

Záver

Tento článok vám ukázal, ako zoradiť stĺpec v programe Excel VBA . dúfam, že tento článok bol pre vás veľmi prínosný. Ak máte akékoľvek otázky týkajúce sa tejto témy, neváhajte sa opýtať.

Hugh West je veľmi skúsený tréner a analytik Excelu s viac ako 10-ročnými skúsenosťami v tomto odvetví. Má bakalársky titul v odbore účtovníctvo a financie a magisterský titul v odbore Business Administration. Hugh má vášeň pre vyučovanie a vyvinul jedinečný vyučovací prístup, ktorý sa dá ľahko sledovať a pochopiť. Jeho odborné znalosti Excelu pomohli tisíckam študentov a profesionálov na celom svete zlepšiť svoje zručnosti a vyniknúť vo svojej kariére. Hugh sa prostredníctvom svojho blogu delí o svoje znalosti so svetom a ponúka bezplatné výukové programy Excelu a online školenia, ktoré jednotlivcom a firmám pomôžu naplno využiť ich potenciál.