Kaip rūšiuoti diapazoną naudojant "Excel" VBA (6 pavyzdžiai)

  • Pasidalinti
Hugh West

Žinant, kaip rūšiuoti diapazoną naudojant VBA programoje "Excel", sutaupoma laiko ir pastangų atliekant kasdienius skaičiavimus. Nors "Excel" pagal nutylėjimą suteikia rūšiavimo funkciją. Naudodami Range.Sort metodas , galime naudotis keliais parametrais, kad duomenų rinkinį būtų galima rūšiuoti naudojant daugiau parinkčių nei įprastai.

Atsisiųsti praktikos sąsiuvinį

Atsisiųskite šį pratybų sąsiuvinį, kad galėtumėte atlikti pratimus skaitydami šį straipsnį.

Rūšiuoti "Excel" diapazoną Excel.xlsm

Įvadas į Range.Sort pareiškimą "Excel VBA" programoje

Tikslas : Jei norite rūšiuoti langelio duomenų diapazoną.

Sintaksė:

išraiška .Sort ( Raktas1 , Užsakymas1 , Key2 , Tipas , Užsakymas2 , Key3 , Order3 , Antraštė , OrderCustom , MatchCase , Orientavimasis , SortMethod , DataOption1 , DataOption2 , DataOption3 )

Čia išraiška yra Diapazonas objektą, t. y. ląstelę, eilutę, stulpelį arba pasirinktą ląstelę.

Argumentai:

Turime teikti trys pagrindiniai parametrai Range.Sort metodas. Jie yra...

Pagrindinis - Vieno ar kelių stulpelių ląstelių intervalas, kurį reikia rūšiuoti.

Užsisakykite - Nurodykite rūšiavimo tvarką didėjimo arba mažėjimo tvarka.

Antraštė - Deklaruokite, ar rūšiuojami stulpeliai turi antraštę, ar ne.

6 pavyzdžiai, kaip rūšiuoti diapazoną "Excel VBA

Šiame straipsnyje kaip duomenų rinkinį naudosime žmonių vardų sąrašą su jų gimimo data ir amžiumi. Duomenų rinkiniui rūšiuoti taikysime įvairius metodus. Peržiūrėkime straipsnį ir praktiškai įsisavinkime šiuos metodus.

1. Rūšiuoti vieno stulpelio diapazoną naudojant "Excel VBA

Šiame pavyzdyje rūšiuoti žmonių iš seniausias į jauniausias . Atlikime veiksmus, kaip naudoti Diapazonas . Rūšiuoti metodas kuris rūšiuoti . Amžiaus stulpelis svetainėje mažėjančia tvarka .

Žingsniai:

  • Eikite į Kūrėjo skirtukas į "Excel" juostelė į spustelėkite apie "Visual Basic

  • Tada pasirinkite Modulio parinktis Skirtukas Insert atidaryti naujas modulis .

Dabar įrašysime savo kodą į rūšiuoti . Amžius stulpelių diapazonas.

1.1 Stulpeliai su antraštėmis

Į "Visual Code Editor" įkelkite šį kodą.

 Sub SortRange() Range("D4:D11").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlYes End Sub 

Paspauskite F5 arba spustelėkite Paleisti mygtuką, kad vykdyti kodą.

Paaiškinimas:

Pirmiau pateiktame kode įrašome-

Išraiška (diapazono objektas)=Range("D4:D11"); . amžiaus stulpelis su antraštė svetainėje langelis D4 ir reikšmės svetainėje D5:D11.

Key = Range("D4"); . raktas svetainėje rūšiavimas.

Order= xlDescending; kaip mes norime rūšiuoti vertės iš didžiausias į mažiausias nustatome rūšiavimo tvarka kaip mažėjančia tvarka.

Antraštė =xlTaip; Toliau pateiktoje ekrano nuotraukoje matome, kad duomenų rinkinys turi antraštė kiekvienam iš stulpeliai.

1.2 Stulpelis be antraštės

Į "Visual Code Editor" įkelkite šį kodą.

 Sub SortRange() Range("D4:D10").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlNo End Sub 

Paspauskite F5 arba spustelėkite Paleisti mygtuką, kad vykdyti kodą.

Paaiškinimas:

Pirmiau pateiktame kode įrašome-

Išraiška (diapazono objektas)=Range("D4:D10"); . amžiaus stulpelis be antraštė turi reikšmės svetainėje D4:D10.

Key = Range("D4"); . raktas svetainėje rūšiavimas.

Order= xlDescending; kaip mes norime rūšiuoti vertės iš didžiausias į mažiausias nustatome rūšiavimo tvarka kaip mažėjančia tvarka.

Antraštė =xlNr; Toliau pateiktoje ekrano nuotraukoje matome, kad duomenų rinkinys neturi antraštė.

Susijęs turinys: Kaip rūšiuoti "Excel" stulpelius nesumaišant duomenų (3 būdai)

2. VBA kodo naudojimas kelių stulpelių diapazonui rūšiuoti "Excel" programoje

Rūšiavimo rodymas keli stulpeliai , turime keisti mūsų duomenų rinkinys šiek tiek. Mes įdėta keletas naujas eilutės Pakeistame duomenų rinkinyje eilutės 7, 8, ir 9 turi tas pats vertės gimimo data ir amžiaus bet trys skirtingi pavadinimai . pavadinimai yra ne bet kuriame konkretus užsakymas kylančio arba besileidžiančio.

Šiame pavyzdyje pavadinimus išdėstysime tokia tvarka didėjančia tvarka . Paleiskime šį kodą "Visual Basic" redaktoriuje:

 Sub SortRange() Range("B4:D12").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Key2:=Range("B4"), _ Order2:=xlAscending, _ Header:=xlYes End Sub 

Paaiškinimas:

Pirmiau pateiktoje ekrano nuotraukoje matome, kad amžius D stulpelis yra surūšiuota svetainėje mažėjantis tvarka. Pridėjome dar du parametrai ankstesniame kode.

Key2: =Range("B4") , pavadinimų rūšiavimo klavišą.

Order2: =xlAscending . užsakymas svetainėje trumpieji pavadinimai .

Todėl matome, kad pavadinimai svetainėje 7, 8 ir 9 eilutės dabar yra pagal abėcėlę surūšiuota į didėjančia tvarka užsakymas.

Toliau pateiktoje ekrano kopijoje pakeitėme vertė Order2 parametras į rūšiuoti . pavadinimai svetainėje mažėjantis užsakymas.

Skaityti daugiau: Kaip "Excel" programoje rūšiuoti kelis stulpelius (5 greiti būdai)

3. Dukart spustelėkite antraštę, kad rūšiuotumėte stulpelių diapazoną "Excel VBA

"Excel" numatytoji rūšiavimo funkcija neleidžia rūšiuoti reikšmes stulpelio pagal dukart spustelėjus . stulpelio antraštė . Tačiau naudodami VBA kodą galime tai padaryti. Iliustruokime šią funkciją taikydami toliau pateiktą kodą.

 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 

Šiame kode naudojome Įvykis "BeforeDoubleClick į išjungti įprastą dvigubą - spustelėkite kuris yra pradėti redagavimas ląstelės režimas. Jei šis įvykis paleistas, jei dvigubas - spustelėkite bet kuriame iš stulpelių antraštės jis surūšiuoja stulpelių duomenis didėjančia tvarka .

Skaityti daugiau: VBA stulpelio rūšiavimas "Excel" programoje (4 metodai)

Panašūs skaitiniai:

  • Kaip pridėti rūšiavimo mygtuką "Excel" (7 metodai)
  • Unikalaus sąrašo rūšiavimas "Excel" programoje (10 naudingų metodų)
  • Kaip naudoti rūšiavimo funkciją "Excel VBA" (8 tinkami pavyzdžiai)
  • Dublikatų rūšiavimas programoje "Excel" (stulpeliai ir eilutės)
  • Atsitiktinis rūšiavimas programoje "Excel" (formulės + VBA)

4. Rūšiuoti stulpelių diapazoną pagal fono spalvą naudojant "Excel VBA

Galime rūšiuoti stulpelio ląstelių intervalą remiantis apie jų fono spalva Kad tai padarytume, turime pridėti a parametras pavadinimu SortOn kuris turi reikšmė xlSortOnCellColor Norėdami pademonstruoti rūšiavimą, pirmiausia nustatome skirtingus fono spalvos į mūsų duomenų rinkinys .

Tada "Visual Basic" kodo redaktoriuje kopijuoti įrašykite šį kodą ir paspauskite F5 jį paleisti.

 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 

Toliau pateiktoje ekrano nuotraukoje matome surūšiuotas duomenų rinkinys pagal jų fono spalvą.

Paaiškinimas:

  • Šiame pavyzdyje pavadinome darbalapis " fonas ". Taigi, į kodą įrašome " fonas " kaip mūsų aktyvaus darbalapio pavadinimas.
  • Nustatome B4 kaip raktas ir B4:D10 kaip diapazonas . Kodas surūšiuos duomenis pagal raktą.
  • Kadangi nenurodėme antraštės parametras , kodas paleidžiamas pagal nutylėjimą be antraštės.
  • Nustatome užsakymas parametrą kaip didėjančia tvarka, todėl ji surūšiavo duomenis nuo mažesnių iki didesnių verčių. .

Skaityti daugiau: Kaip "Excel" rūšiuoti pagal spalvą (4 kriterijai)

5. Taikyti VBA kodą stulpelių diapazonui rūšiuoti pagal šrifto spalvą

Taikydami VBA kodą, galime rūšiuoti duomenų rinkinį pagal jų šrifto spalva . Pirma, turime spalva skirtingos eilutės pavyzdžiui iliustruoti.

Taikykite toliau pateiktą kodą, kad surūšiuotumėte duomenų rinkinį pagal šrifto spalva.

 Sub SortRangeByFontColor() ActiveWorkbook.Worksheets("fontcolor").Sort.SortFields.Add(Range("B4"), _ xlSortOnFontColor, xlAscending, xlSortNormal).SortOnValue.Color = RGB(0, 0, 0, 0) With ActiveWorkbook.Worksheets("fontcolor").Sort .SetRange Range("B4:D11") .Header = xlYes .Orientation = xlTopToBottom .Apply End With End Sub 

Paaiškinimas:

  • Šiame pavyzdyje pavadinome darbalapis " šrifto spalva ". Taigi, į kodą įrašome " šrifto spalva " kaip mūsų aktyvaus darbalapio pavadinimas.
  • Nustatome B4 kaip raktas ir B4:D11 kaip diapazonas . Kodas surūšiuos duomenis pagal raktą.
  • Šiame pavyzdyje taip pat nurodėme tokį antraštės parametrą xlYes .
  • Čia nustatome užsakymas parametrą kaip didėjančia tvarka, todėl ji surūšiavo duomenis nuo mažesnių iki didesnių verčių. .
  • Vertė SortOn parametras yra
  • Svetainė orientacijos parametras turi vertę xlTopToBottom nes tai yra privaloma.
  • Spalva rūšiuoti pagal RGB, kurio vertė yra nuo 0 į 255 .

Skaityti daugiau: Kaip rūšiuoti du "Excel" stulpelius, kad jie sutaptų (tiek tikslus, tiek dalinis sutapimas)

6. Orientacijos keitimas į rūšiavimo diapazoną naudojant "Excel VBA

Naudojant orientacija parametrą, galime pakeisti duomenų rūšiavimo būdą. Šiame pavyzdyje transponuotas mūsų duomenų rinkinį, kad rūšiuoti tai horizontaliai .

Į Visual Basic redaktorių įkelkime šį kodą ir paspauskite F5, kad jį paleistumėte.

 Sub Orientation() Range("B4:H6").Sort Key1:=Range("B6"), _ Order1:=xlAscending, _ Orientation:=xlSortRows, _ Header:=xlYes End Sub 

Čia mes surūšiuota duomenis pagal amžiaus eilutė svetainėje didėjančia tvarka užsakymas iš kairėje į dešinėje . Kodo dalyje nustatome orientacija parametrą kaip xlSortRows .

Susijęs turinys: Kaip automatiškai rūšiuoti kelis "Excel" stulpelius (3 būdai)

Dalykai, kuriuos reikia prisiminti

  • Svetainė SortOn parametras kad mes naudojome rūšiuoti stulpelių diapazonas pagal fono spalva ir šrifto spalva gali naudoti tik darbalapio objektas . Negalime jo naudoti su diapazono objektas .
  • Svetainė Įvykis "BeforeDoubleClick rūšiuoja duomenis tik į didėjančia tvarka.

Išvada

Dabar žinome, kaip rūšiuoti diapazoną naudojant "Excel" VBA. Tikimės, kad tai paskatins jus drąsiau tuo naudotis. Jei turite klausimų ar pasiūlymų, nepamirškite jų pateikti toliau esančiame komentarų laukelyje.

Hugh Westas yra labai patyręs Excel treneris ir analitikas, turintis daugiau nei 10 metų patirtį šioje srityje. Jis yra įgijęs apskaitos ir finansų bakalauro bei verslo administravimo magistro laipsnius. Hugh turi aistrą mokymui ir sukūrė unikalų mokymo metodą, kurį lengva sekti ir suprasti. Jo ekspertinės žinios apie „Excel“ padėjo tūkstančiams studentų ir specialistų visame pasaulyje tobulinti savo įgūdžius ir tobulėti savo karjeroje. Savo tinklaraštyje Hugh dalijasi savo žiniomis su pasauliu, siūlydamas nemokamus „Excel“ vadovėlius ir internetinius mokymus, kad padėtų asmenims ir įmonėms išnaudoti visą savo potencialą.