Sisällysluettelo
Excelin VBA:n avulla tapahtuvan lajittelun osaaminen säästää aikaa ja vaivaa päivittäisissä laskutoimituksissamme. Vaikka Excel tarjoaa oletusarvoisesti lajittelumahdollisuuden. Käyttämällä Range.Sort menetelmä voimme käyttää useita parametreja, joiden avulla voimme lajitella tietokokonaisuuksia tavallista useammilla vaihtoehdoilla.
Lataa harjoituskirja
Lataa tämä harjoituskirja, jotta voit harjoitella tätä artikkelia lukiessasi.
Lajittele alue Excel.xlsm:ssäJohdanto Range.Sort-lausekkeeseen Excel VBA:ssa
Tarkoitus : Lajitella solun tietoväli.
Syntaksi:
ilmaisu .Sort ( Key1 , Tilaus1 , Key2 , Tyyppi , Tilaus2 , Key3 , Tilaus3 , Otsikko , OrderCustom , MatchCase , Orientaatio , SortMethod , DataOption1 , DataOption2 , DataOption3 )
Täällä ilmaisu edustaa Valikoima eli solun, rivin, sarakkeen tai soluvalinnan.
Argumentit:
Meidän on tarjottava kolme tärkeimmät parametrit Range.Sort Menetelmä. Ne ovat...
Avain - Solujen alue yhdestä tai useammasta sarakkeesta, jotka on lajiteltava.
Tilaa - Määritä lajittelujärjestys joko nouseva tai laskeva.
Otsikko - Ilmoittaa, onko lajiteltavilla sarakkeilla otsikko vai ei.
6 esimerkkejä lajitella alue Excel VBA: ssa
Tässä artikkelissa käytämme tietokokonaisuutena luetteloa ihmisten nimistä sekä heidän syntymäajastaan ja iästään. Sovellamme erilaisia menetelmiä tietokokonaisuuden lajitteluun. Käydään artikkeli läpi ja harjoitellaan näiden menetelmien hallintaa.
1. Lajittele yhden sarakkeen alue Excel VBA: n avulla
Tässä esimerkissä lajittele ihmiset Vanhin osoitteeseen nuorin Seurataan vaiheita käyttääksemme työkalua. Valikoima . Lajittele menetelmä joka lajittele ... Ikä-sarake osoitteessa laskeva järjestys .
Vaiheet:
- Mene osoitteeseen Kehittäjä-välilehti vuonna Excel-nauha osoitteeseen klikkaa on Visual Basic
- Valitse sitten Moduulivaihtoehto alkaen Lisää-välilehti avata uusi moduuli .
Nyt laitamme koodimme lajittele ... Ikä sarakealue.
1.1 Pylväs ja otsikko
Laita seuraava koodi visuaaliseen koodieditoriin.
Sub SortRange() Range("D4:D11").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlYes End Sub
Paina F5 tai klikkaa Suorita painiketta execute koodi.
Selitys:
Yllä olevassa koodissa laitamme-
Lauseke (Range-objekti)=Range("D4:D11"); ... ikäsarake a:lla otsikko osoitteessa solu D4 ja arvot osoitteessa D5:D11.
Key = Range("D4"); ... avain osoitteessa lajittelu.
Järjestys= xlDescending; koska haluamme lajittele arvot suurin osoitteeseen alhaisin asetamme lajittelujärjestys kuten laskeva.
Otsikko =xlYes; Seuraavassa kuvakaappauksessa näkyy, että dataset on otsikko kunkin sarakkeet.
1.2 Sarake ilman otsikkoa
Laita seuraava koodi visuaaliseen koodieditoriin.
Sub SortRange() Range("D4:D10").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlNo End Sub
Paina F5 tai klikkaa Suorita painiketta execute koodi.
Selitys:
Yllä olevassa koodissa laitamme-
Lauseke (Range-objekti)=Range("D4:D10"); ... ikäsarake ilman otsikko on arvot osoitteessa D4:D10.
Key = Range("D4"); ... avain osoitteessa lajittelu.
Järjestys= xlDescending; koska haluamme lajittele arvot suurin osoitteeseen alhaisin asetamme lajittelujärjestys kuten laskeva.
Otsikko =xlNo; Seuraavassa kuvakaappauksessa näemme, että komento dataset ei ole otsikko.
Aiheeseen liittyvä sisältö: Kuinka lajitella sarakkeita Excelissä sekoittamatta tietoja (3 tapaa)
2. Käyttämällä VBA-koodia lajitella useita sarakkeita Excelissä
Lajittelun näyttäminen useita sarakkeita , meidän on muuttaa meidän dataset vähän. lisätty muutama uusi rivit Muutetussa tietokokonaisuudessa rivit 7, 8, ja 9 on sama arvot syntymäaika ja iät mutta kolme eri nimeä . nimet ovat ei missä tahansa tietty järjestys nousevan tai laskevan.
Tässä esimerkissä järjestämme nimet seuraavasti nouseva järjestys Suoritetaan seuraava koodi Visual Basic -editorissa:
Sub SortRange() Range("B4:D12").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Key2:=Range("B4"), _ Order2:=xlAscending, _ Header:=xlYes End Sub
Selitys:
Yllä olevasta kuvakaappauksesta näemme, että ikärajat kohdassa sarake D ovat lajiteltu osoitteessa laskeva järjestys. Lisäsimme kaksi muuta parametria edellisessä koodissamme.
Key2: =Range("B4") , näppäin nimien lajittelua varten.
Järjestys2: =xlAscending ... tilaus osoitteessa nimien shorttaaminen .
Tämän seurauksena näemme, että nimet osoitteessa rivit 7, 8 ja 9 ovat nyt aakkosjärjestyksessä lajiteltu sisään nouseva järjestys.
Seuraavassa kuvakaappauksessa muutimme arvo of the Order2-parametri osoitteeseen lajittele ... nimet osoitteessa laskeva järjestys.
Lue lisää: Kuinka lajitella useita sarakkeita Excelissä (5 nopeaa lähestymistapaa)
3. Kaksoisnapsauta otsikkoa lajitellaksesi sarakealueen Excel VBA: ssa
Excelin oletusarvoinen lajittelutoiminto ei salli lajittele arvot sarakkeen kaksoisnapsauttamalla ... sarakeotsikko VBA-koodin avulla voimme kuitenkin toteuttaa sen. Havainnollistetaan tätä toimintoa seuraavalla koodilla.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim KeyRange As Range Dim ColCount As Integer ColCount = Range("A1:C8").Columns.Count Cancel = False If Target.Row = 1 And Target.Column <= ColCount Then Cancel = True Set KeyRange = Range(Target.Address) Range("A1:C8").Sort Key1:=KeyRange, Header:=xlYes End If End Sub
Tässä koodissa käytimme BeforeDoubleClick-tapahtuma osoitteeseen poistaa käytöstä tavanomaisen kaksinkertaisen - klikkaa joka on käynnistää editointi Kun tämä tapahtuma on käynnissä, jos me double - klikkaa millä tahansa sarakeotsikot se lajittelee sarakkeen tiedot nouseva järjestys .
Lue lisää: VBA lajitella sarake Excelissä (4 menetelmää)
Samanlaisia lukemia:
- Miten lisätä lajittelupainike Excelissä (7 menetelmää)
- Lajittele ainutlaatuinen luettelo Excelissä (10 hyödyllistä menetelmää)
- Kuinka käyttää lajittelutoimintoa Excel VBA: ssa (8 sopivaa esimerkkiä)
- Lajittele kaksoiskappaleet Excelissä (sarakkeet ja rivit)
- Satunnainen lajittelu Excelissä (kaavat + VBA)
4. Lajittele sarakealue, joka perustuu taustaväriin Excel VBA: n avulla
Voimme lajitella sarakkeen solualueita sarakkeessa perustuu heidän taustaväri Sitä varten meidän on lisää a parametri nimeltään SortOn jolla on arvo xlSortOnCellColor xlSortOnCellColor Lajittelun havainnollistamiseksi asetamme ensin erilaisia taustavärit riveille meidän dataset .
Sitten Visual Basic -koodieditorissa kopioi seuraava koodi ja paina F5 ajaa sitä.
Sub SortRangeByBackgroundColor() ActiveWorkbook.Worksheets("background").Sort.SortFields.Add2 Key:=Range("B4"), _ SortOn:=xlSortOnCellColor, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("background").Sort .SetRange Range("B4:D10") .Apply End With End Sub
Seuraavassa kuvakaappauksessa näemme, että lajiteltu tietokokonaisuus niiden taustavärin perusteella.
Selitys:
- Tässä esimerkissä nimesimme työlehti " tausta ". Joten koodiin laitetaan " tausta " meidän aktiivisen työarkin nimi.
- Asetamme B4 kuten avain ja B4:D10 kuten alue Koodi lajittelee tiedot avaimen perusteella.
- Koska emme määritelleet otsikkoparametri , koodi suoritetaan oletusarvoisen ei otsikkoa.
- Asetamme tilaus parametri kuin nouseva, joten se lajitteli tiedot pienemmistä arvoista suurempiin. .
Lue lisää: Miten lajitella värin mukaan Excelissä (4 kriteeriä)
5. Soveltaa VBA-koodia lajitella sarakealue fontin värin perusteella
Soveltamalla VBA-koodia voimme lajitella tietokokonaisuutemme perustuen niiden fontin väri Ensinnäkin meidän on väri eri rivejä esimerkin havainnollistamiseksi.
Sovella alla olevaa koodia lajitellaksesi tietokokonaisuuden seuraavilla perusteilla fontin väri.
Sub SortRangeByFontColor() ActiveWorkbook.Worksheets("fontcolor").Sort.SortFields.Add(Range("B4"), _ xlSortOnFontColor, xlAscending, xlSortNormal).SortOnValue.Color = RGB(0, 0, 0) With ActiveWorkbook.Worksheets("fontcolor").Sort .SetRange Range("B4:D11") .Header = xlYes .Orientation = xlTopToBottom .Apply End With End Sub
Selitys:
- Tässä esimerkissä nimesimme työlehti " fontcolor ". Joten koodiin laitetaan " fontcolor " meidän aktiivisen työarkin nimi.
- Asetamme B4 kuten avain ja B4:D11 kuten alue Koodi lajittelee tiedot avaimen perusteella.
- Tässä esimerkissä määrittelimme myös otsikkoparametrin muotoon xlYes .
- Tässä asetetaan tilaus parametri kuin nouseva, joten se lajitteli tiedot pienemmistä arvoista suurempiin. .
- Arvo on SortOn parametri on
- The suuntausparametri pitää sisällään arvon xlTopToBottom koska se on pakollinen.
- Väri lajitella on RGB-termein, joiden arvo on välillä 0 osoitteeseen 255 .
Lue lisää: Miten lajitella kaksi saraketta Excelissä vastaamaan (sekä tarkka että osittainen ottelu)?
6. Vaihda suunta lajittelualueelle Excel VBA: n avulla
Käyttämällä orientaatio parametrin avulla voimme muuttaa tapaa, jolla haluamme lajitella tiedot. Tässä esimerkissä meillä on siirretty tietokokonaisuutemme lajittele se horisontaalisesti .
Laitetaan seuraava koodi Visual Basic -editoriin ja ajetaan se painamalla F5.
Sub Orientation() Range("B4:H6").Sort Key1:=Range("B6"), _ Order1:=xlAscending, _ Orientation:=xlSortRows, _ Header:=xlYes End Sub
Täällä me lajiteltu tiedot perustuvat ikärivi osoitteessa nouseva tilata vasen osoitteeseen oikea Koodissa asetamme orientaatio parametri kuin xlSortRows .
Aiheeseen liittyvä sisältö: Kuinka lajitella useita sarakkeita Excelissä (3 tapaa)
Muistettavat asiat
- The SortOn-parametri jota käytimme lajittele sarakealue perustuu taustaväri ja fontin väri voi käyttää vain työarkin objekti . Emme voi käyttää sitä range-objekti .
- The BeforeDoubleClick-tapahtuma lajittelee tiedot vain nouseva.
Päätelmä
Nyt tiedämme, miten lajitella alue VBA: n avulla Excelissä. Toivottavasti se rohkaisee sinua käyttämään tätä varmemmin. Jos sinulla on kysyttävää tai ehdotuksia, älä unohda laittaa niitä alla olevaan kommenttikenttään.