Turinys
Ž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 iš 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ė iš 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.