Excel VBA -lajittelu

Tietoja voi lajitella Microsoft Excelissä eri tavoilla. Excel Data -välilehden alla on lajittelukuvake, josta voit lajitella tietosi hetkessä ja saada tulokset. Miksi sitten on tarpeen kirjoittaa monimutkainen VBA-koodi?

Sinun on pidettävä se mielessäsi joka kerta, VBA-koodit ovat olemassa automatisoimaan asiat. Oletetaan, että sinulla on tietoja, joita päivitetään aina silloin tällöin. Ehkä joka päivä, viikoittain, kuukausittain jne. Ja tarvitset tietosi tietyllä lajitelulla tavalla. Tällaisissa tapauksissa VBA SORT -toimintoa voidaan käyttää, ja se on kätevä työkalu käytettäväksi.

VBA: lla on Range.Sort -menetelmä tietojen lajittelua varten. Missä Alue määrittelee solualueen, jonka haluamme selvittää nousevassa tai laskevassa järjestyksessä.

Range.Sortin syntaksi on seuraava:

Missä,

  • Näppäin - lajiteltava sarake / alue. Ex. Jos haluat lajitella solut A1: A10, sinun on mainittava alue (A1: A10)
  • Järjestys - Tämä on parametri, jonka avulla voit lajitella tiedot nousevassa tai laskevassa järjestyksessä.
  • Otsikko - Tämä on parametri, joka määrittelee, onko sarakkeessasi / alueesi otsikot vai ei.

Nämä kolme parametria ovat riittäviä menettelyämme varten. On kuitenkin joitain muita parametrejä, kuten MatchCase, SortMethod jne., Joita voit aina tutkia ja nähdä kuinka ne toimivat.

Kuinka käyttää Excel VBA -lajittelutoimintoa?

Opimme kuinka VBA-lajittelua voidaan käyttää lajittelemalla sarake ilman otsikoita, sarake otsikoilla ja useita sarakkeita esimerkeillä excel.

Voit ladata tämän VBA Sort Excel -mallin täältä - VBA Sort Excel Template

VBA-lajittelutoiminto - esimerkki # 1

Yksittäisen sarakkeen lajittelu ilman otsikkoa

Oletetaan, että sinulla on sarake alla olevilla nimillä, ja tarvitset vain lajitella nämä tiedot aakkosjärjestyksessä nousevassa tai laskevassa järjestyksessä.

Noudata alla olevia vaiheita käyttääksesi VBA-lajittelutoimintoa.

Vaihe 1: Määritä uusi sup-menettely moduulin alla ja luo makro.

Koodi:

 Sub SortEx1 () Lopeta alaosa 

Vaihe 2: Käytä Range.Sort-toimintoa voidaksesi lajitella tämän sarakkeen nousevassa järjestyksessä.

Koodi:

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

Tässä annat alueet alkaen solusta A1 viimeiseen käytettyyn / tyhjään soluun (katso toiminto .End (xlDown)) Range.Sort-toimintoon.

Vaihe 3: Anna nyt argumenttiarvot.

Koodi:

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

Kuten olemme aiemmin keskustelleet, avain, järjestys ja otsikko ovat tärkeät ja välttämättömät perusteet, jotka on toimitettava. Olemme antaneet alue (“A1”) sarakkeen aloitusalueena, joka meidän on lajiteltava. Tilaus toimitetaan nousevana ja ylätunnisteena Ei (mikä tarkoittaa, että sarakkeessa ei ole otsikkoa).

Tämä koodi tarkistaa kaikki tyhjät solut alkaen A1: stä ja lajittelee ne sitten nousevassa järjestyksessä alkaen solusta A1.

Vaihe 4: Suorita tämä koodi napsauttamalla F5 tai Suorita-painiketta manuaalisesti ja katso lähtö.

Jos voit verrata tätä kuvan kanssa tämän esimerkin alussa, voit nähdä, että nimet on lajiteltu nousevaan järjestykseen.

VBA-lajittelutoiminto - esimerkki 2

Yksittäisen sarakkeen lajittelu otsikolla

Oletetaan, että sinulla on sarake otsikolla kuten alla. Ja halusit lajitella tämän sarakkeen nousevassa tai laskevassa järjestyksessä.

Noudata alla olevia vaiheita käyttääksesi VBA-lajittelutoimintoa.

Vaihe 1: Määritä uusi alamenettely uudessa mallissa makron tallentamiseksi.

Koodi:

 AlalajitteluEx2 () Loppu alaosaan 

Vaihe 2: Käytä Taulukoita (”Esimerkki # 2”) määrittääksesi, mikä arkki tietosi ovat.

Koodi:

 Sub SortEx2 () -arkit ("Esimerkki 2") Loppu alaosaan 

Vaihe 3: Käytä Range (“A1”). Lajittele yllä olevan koodirivin eteen, jotta siitä tulee lajittelutoiminto.

Koodi:

 Sub SortEx2 () -arkit ("Esimerkki # 2"). Alue ("A1"). Sort End Sub 

Vaihe 4: Anna avain1 asteikolla (“A1”), jotta voit lajitella tiedot solusta A1, Järjestys1, jotta lajitellaan tiedot nousevassa tai laskevassa järjestyksessä ja Otsikko- kyllä, jotta järjestelmä tietää, että ensimmäinen rivi on otsikossa tiedot.

Koodi:

 Sub SortEx2 () -arkit ("Esimerkki # 2"). Alue ("A1"). Lajittelunäppäin1: = Alue ("A1"), Järjestys1: = xlAscending, Header: = xlYes End Sub 

Vaihe 5: Suorita tämä koodi napsauttamalla F5 tai Suorita-painiketta manuaalisesti ja katso lähtö.

Tässä tietyn excel-työkirjan esimerkin # 2 tiedot lajitellaan nousevassa järjestyksessä, koska siinä on otsikko. Mikä tarkoittaa, että näitä tietoja lajitellessaan ensimmäinen rivi (joka sisältää Emp-nimen ) jätetään huomiotta, koska sitä pidetään näiden tietojen otsikossa sarakkeessa A.

Voit myös lajitella samat tiedot aakkosten alenevassa järjestyksessä. Sinun tarvitsee vain muuttaa järjestystä nousevasta laskevaan.

Vaihe 6: Muuta järjestys1 laskevaksi, jotta tiedot voidaan lajitella laskevaan järjestykseen.

Koodi:

 Sub SortEx2 () -arkit ("Esimerkki 2"). Alue ("A1"). Lajittelunäppäin1: = Alue ("A1"), Order1: = xlDescending, Header: = xlYes End Sub 

Vaihe 7: Suorita koodi ja katso lähtö alla esitetyllä tavalla.

Voit nähdä, että tiedot on lajiteltu alenevassa järjestyksessä.

VBA-lajittelutoiminto - esimerkki 3

Useiden sarakkeiden lajittelu otsikoilla

Tähän mennessä olemme käsittäneet, kuinka lajitella yhden sarakkeen tiedot nousevassa tai laskevassa järjestyksessä (ilman otsikkoa ja otsikkoa). Entä jos sinulla on tietoja, jotka sinun täytyy lajitella useiden sarakkeiden perusteella? Onko mahdollista kirjoittaa koodi samalle?

Vastaus on: "Kyllä, se voidaan varmasti tehdä!"

Oletetaan, että sinulla on alla olevat tiedot:

Haluat lajitella nämä tiedot ensin Emp-nimen ja sitten sijainnin mukaan. Seuraa alla olevia vaiheita nähdäksesi kuinka voimme koodata sen VBA: ssa.

Vaihe 1: Määritä uusi alamenettely lisätäksesi makro uuteen moduuliin.

Koodi:

 Sub SortEx3 () Lopeta alaosa 

Vaihe 2: Käytä With… End With -käskyä lisätäksesi useita lajitteluolosuhteita yhteen silmukkaan.

Koodi:

 Sub SortEx3 (), jossa ActiveSheet.Sort End Sub 

Vaihe 3: Lisää nyt useita lajitteluolosuhteita samaan taulukkoon käyttämällä SortFields.Add.

Koodi:

 Sub SortEx3 () ActiveSheet.Sort .SortFields.Add-avaimella: = Alue ("A1"), Järjestys: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending End Sub 

Vaihe 4: Päätä lajiteltava arkkialue ja otsikko Seuraavassa vaiheessa.

Koodi:

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

Vaihe 5: Käytä .Apple soveltaa kaikki nämä asiat lauseeseen ja sulje silmukan kirjoittaminen End With.

Koodi:

 Sub SortEx3 (), jossa ActiveSheet.Sort .SortFields.Add Key: = Range ("A1"), Order: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending .SetRange Range ("A1 : C13 ") .Header = xlKyllä .Hae päättyy loppuun alaosaan 

Vaihe 6: Suorita tämä koodi napsauttamalla F5 tai Suorita-painiketta manuaalisesti ja katso lähtö.

Tässä koodissa ActiveSheets.Sort auttaa järjestelmää tunnistamaan taulukon, jonka alla tiedot lajitellaan. SortFields.Add mahdollistaa kahden lajitteluedellytyksen lisäämisen järjestyksessä (nouseva molemmissa tapauksissa). SetRange antaa järjestelmän asettaa alue A1 - C13. Voit myös siirtää tätä kantamaa ylöspäin. Käytä lauseita antaa järjestelmälle mahdollisuuden soveltaa kaikkia With-silmukkaan tehtyjä muutoksia.

Lopuksi saat tiedot, jotka on lajiteltu ensin Emp Name First ja sitten Location.

Muistettavat asiat

  • VBA-lajittelu -kohdassa voit luoda nimettyjä alueita soluviitteiden sijasta ja käyttää niitä. Ex. Jos olet luonut nimetyn alueen solulle A1: A10 nimellä “EmpRange”, voit käyttää sitä kohdassa Range.Sort kuten Range (“EmpRange”).
  • Voit lajitella tiedot nousevaan ja laskevaan järjestykseen samalla tavalla kuin excel-tiedoissa.
  • Jos et ole varma siitä, onko tiedoissasi otsikko vai ei, voit käyttää xlGuess-otsikkoa otsikon alla antaa järjestelmän arvata, onko ensimmäinen tietorivi otsikko vai ei.

Suositellut artikkelit

Tämä on opas Excel VBA -lajitteluun. Täällä keskustelimme VBA-lajittelusta ja siitä, miten Excel VBA -lajittelutoimintoa käytetään, sekä käytännön esimerkkejä ja ladattavaa Excel-mallia. Voit myös käydä läpi muiden ehdottamiemme artikkeleidemme -

  1. Pikaopas Exceliin lajittelu numeron mukaan
  2. VBA-ottelutoiminnon käyttäminen
  3. Kuinka lajitella sarake Excelissä?
  4. VBA Vaikka silmukka | MS Excel

Luokka: