Exceli sortimine värvide järgi VBA abil - Exceli näpunäited

Varem Podcast 2093-s näitasin lihtsat VBA sortimist, mis töötab, kui te ei sorti värvi järgi. Täna palub Neeta VBA-l Exceli andmeid sortida värvide järgi.

VBA järgi sorteerimisel on kõige keerulisem välja selgitada, milliseid RGB värvikoode te kasutate. 99% juhtudest ei valinud te värvi RGB-väärtuste sisestamisega. Valisite värvi Excelis selle rippmenüü abil.

Enamik inimesi valib selle rippmenüü abil täitevärvi või fondi värvi

Ja kui soovite kasutada valikut Täitke, Rohkem värve, Kohandatud, saate teada, et valitud värv on RGB (112,48,160).

RGB-koodid on selles dialoogis peidetud

Niisiis - eelistan makrofoni sisse lülitada ja lasta makrofonil koodi välja mõelda. Makromagnetofoni loodud kood pole kunagi täiuslik. Siin on video, mis näitab, kuidas makrosalvestit värvide järgi sortimisel kasutada.

Video ärakiri

Õppige Exceli programmi Podcast, osa 2186: VBA sortimine värvi järgi.

Tere, tere tulemast tagasi netisaate juurde, ma olen Bill Jelen. Tänane küsimus, saadetud YouTube'i. Mul oli seal video, kuidas VBA-ga sorteerida, ja nad tahtsid VBA-ga värvide järgi sorteerida, mis on palju keerulisem. Ma ütlesin: "Miks te ei lülita lihtsalt makrofaili sisse ja vaatate, mis juhtub?" Ja kahjuks, makromagnetofon, teate, see viib meid lähedale, kuid see ei vii meid sinna.

Nii et vaade, makrod, salvestusmakro, "HowToSortByColor", makro salvestamine sellesse töövihikusse - täiuslik. Klõpsake nuppu OK. Hästi, nii et nüüd töötab makrosalvesti, tuleme siia vahekaardile Andmed ja ütleme Sort. Kasutame dialoogiboksi Sort ja loome selle, eks? Niisiis, me ütleme, et tahame lisada taseme Sort on Cherry, kuid mitte Sort on Cell Väärtused; me hakkame sorteerima lahtrivärvi järgi - lahtrivärv on seal täitevärv - ja me tahame panna punasele ülaosale ning seejärel selle taseme kopeerida ja teiseks panna kollase; ja siis lisame uue taseme - läheme veergu D, kuupäeva veergu - sortige lahtrivärvi järgi, kõigepealt punane, kopeerige see tase, kollane ja siis siin; siis siin Elderberry veerus E on paar sinist kirja, mida ma ei taha näha, kuidas see välja nägi,nii et lisame selle Sordi fontina, sinine peal; ja kui need kõik on võrdsed värvidega, siis lisame veerule A ühe viimase taseme - lahtriväärtused, suurimast väikseimani; ja klõpsake nuppu OK.

Hästi, nüüd, paar asja - ärge jätke seda järgmist sammu vahele - teie fail, praegu garanteerin, et olete salvestatud kui xlsx. See on suurepärane aeg teha faile, salvestada kui ja salvestada failidena xlsm või xlsb. Kui te seda ei tee, lähevad selle faili salvestamisel kaotsi kogu selle ajani tehtud tööd. Nad kustutavad kõigi xlsx-is salvestatud makrod. Hästi?

Nii et me lõpetasime seal salvestamise ja siis tahame minna oma makrosid vaatama. Nii saate seda teha View, Macros-- View, Macros-- ja leida just salvestatud makro - HowToSortByColor - ja klõpsata nuppu Muuda. Hästi, nii et siin on meie makro ja kui ma seda vaatan, on meil probleem, täna on meil juhtumisi 25 rida pluss pealkiri. Nii et see langeb 26. ritta. Ja nad on kodeerinud, et vaatavad alati 26. rida.

Kuid kui ma sellele mõtlen, eriti võrreldes vana VBA-ga sortimiseks, ei pea me veerus määrama kogu vahemikku - ainult ühte lahtrit. Nii et kõikjal, kus neil on veerg C26, vähendan seda, öeldes lihtsalt: "Kuule, ei, vaata selle veeru esimest lahtrit". Niisiis E2 ja siis siin A2. Nii et minu puhul oli mul 1, 2, 3, 4, 5, 6, sorteerimistasandit - 6 asja, mida muuta.

Ja siis on see osa, mille makrofonist saab väga-väga halvaks, kas nad järjestavad kogu aeg ainult 26. rida. Nii et ma kavatsen seda muuta. Ma ütlen: "Vaadake, alustage vahemikust A21 ja laiendage seda väärtusele .CurrentRegion." Heidame pilgu Excelisse ja vaatame, mida see teeb. Niisiis, kui valiksin lihtsalt ühe lahtri - A1 või midagi muud - ja vajutaksin klahvikombinatsiooni Ctrl + *, valib see praeguse piirkonna. Olgu, teeme ära. Siin on keskelt Ctrl + * ja mida see teeb, kas see laieneb igas suunas, kuni see tabab arvutustabeli serva, arvutustabeli ülaosas või andmete paremas servas või andmete alumises servas . Niisiis, öeldes A1 .CurrentRegion, on nagu minna A1-le ja vajutada Ctrl + *. Hästi? Nii et siin peate seda asja muutma. Nüüd on kõik muu makros korras; see 's kõik lähevad tööle. Nad said SortOnCellColor ja SortOnFontColor ning xlSortOn. Ma ei pea selle pärast muretsema; mul jääb vaid üle vaadata siit ja näha, et nad kodeerisid kõvasti piirkonda, mida kavatsesid vahemikus kasutada, kodeerisid kõvasti, kui kaugele need läksid, ja seda pole vaja karmilt kodeerida. Ja selle lihtsa sammuga, muutes neid kuut ja seitsmendat, on meil midagi, mis peaks töötama.

Nüüd teeme testi. Tuleme siia Excelisse tagasi ja lisame allosas mõned uued read. Panen sinna lihtsalt 11 ja lisame paar punast - punase, kollase ja siis siia sinise. Hästi. Nii et kui me läheme seda koodi käivitama - käivitame selle koodi, siis klõpsan siia ja klõpsan nuppu Käivita - ja siis tuleme tagasi, peaksime nägema, et sellest 11-st sai punane ülemine üksus, see ilmus seal kollased ja see ilmneb sinistes värvides, nii et see kõik töötab ideaalselt. Miks see tippu läks? Kuna juhtus, et viimane sort on A-veerg, siis kui lips on võrdne, näeb see A-veergu sidemurdjana. Nii et see kood töötab.

VBA kirjutamise õppimiseks olen koos Tracy Syrstadiga kirjutanud rea raamatuid, Excel VBA ja MACROS. Nüüd on väljaanne olnud aastatel 2003, 2007, 2010, 2013 ja 2016; varsti 2019. Olgu, minge, leidke teie Exceli versioonile vastav versioon ja see viib teid õppimiskõverale.

Kokkuvõte: tänane osa on: Kuidas kasutada VBA-d värvide järgi sortimiseks. Lihtsaim viis seda teha, eriti kuna te ei tea, milliseid RGB-koode iga värvi jaoks kasutati - valisite lihtsalt punase, te ei tea, mis on RGB-kood, ja te ei taha minna vaatama see üles - lülitage makrosalvesti sisse, kasutades View, Macros, Record New Macro. Kui olete sortimise lõpetanud, klõpsake nuppu Peata salvestamine - see asub vasakus alanurgas - Alt + F8 makrode loendi kuvamiseks või Vaade, Makrod, Kuva makro - vahekaart Vaade, Makrod ja siis vaata makrosid - see on segane. PS Valige oma makro ja klõpsake nuppu Muuda ning kui näete C2 mõne vahemiku numbri jaoks, muutke see lihtsalt 2. reale. Ja siis, kus nad määravad sortimiseks vajaliku vahemiku, laieneb vahemik ("A1") ja CurrentRegion. Hästi.

Noh, hei, ma tahan tänada teid, et peatusite, näeme järgmine kord järgmise netisaate jaoks.

Videos seadistasin kuue taseme sortimise. Lõppdialoog kuvatakse siin:

Sorteeri punase järgi, kollane tähega C, punane, kollane tähega d, sinine tähega e, numbrite arvuga a

Päeval, mil juhtusin makrot salvestama, oli mul 23 andmerida pluss pealkiri. Makros oli seitse kohta, mis ridade arvu kõvasti kodeerisid. Neid tuleb kohandada.

Iga sortimistaseme jaoks on selline kood:

ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add(Range("C2:C24"), _ xlSortOnCellColor, xlAscending, , _ xlSortNormal).SortOnValue.Color = RGB(255, 0, 0) 

See on rumal, et makromagnetofon määrab C2: C24. Veerus peate määrama ainult ühe lahtri, seega muutke ülaltoodud esimene rida järgmiseks:

ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add(Range("C2"), _

Tehke iga sortimise taseme jaoks sarnane muudatus.

Salvestatud makro lõpus on salvestatud kood reaalseks sortimiseks. See algab järgmiselt:

With ActiveWorkbook.Worksheets("Sheet2").Sort .SetRange Range("A1:E24") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With

Selle asemel, et sortida ainult A1: E24, muutke kood alguseks A1 ja laiendage praegusele piirkonnale. (Praegune piirkond on see, mille saate, kui vajutate lahtrist Ctrl + *).

.SetRange Range("A1").CurrentRegion

Videol näidatud lõplik kood on:

Sub HowToSortByColor() HowToSortByColor Macro ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear ' Sort column C by Red ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add(Range("C2"), _ xlSortOnCellColor, xlAscending, , _ xlSortNormal).SortOnValue.Color = RGB(255, 0, 0) ' Sort Column C by Yellow ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add(Range("C2"), _ xlSortOnCellColor, xlAscending, , _ xlSortNormal).SortOnValue.Color = RGB(255, 255, 0) ' Sort column D by Red ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add(Range("D2"), _ xlSortOnCellColor, xlAscending, , _ xlSortNormal).SortOnValue.Color = RGB(255, 0, 0) ' Sort column D by Yellow ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add(Range("D2"), _ xlSortOnCellColor, xlAscending, , _ xlSortNormal).SortOnValue.Color = RGB(255, 255, 0) ' Sort column E by blue font ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add(Range("E2"), _ xlSortOnFontColor, xlAscending, , _ xlSortNormal).SortOnValue.Color = RGB(0, 176, 240) ' Sort Column A by Values descending ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=Range("A2"), _ SortOn:=xlSortOnValues, _ Order:=xlDescending, _ DataOption:=xlSortNormal ' Perform the Sort With ActiveWorkbook.Worksheets("Sheet2").Sort .SetRange Range("A1").CurrentRegion .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub

Märge

Tõenäoliselt on teie töövihik salvestatud laiendusega XLSX. XLSM- või XLSB-laienduseks muutmiseks tehke valik Salvesta nimega. Kõik XLSX-i salvestatud makrod kustutatakse.

Exceli päeva mõte

Olen küsinud oma Exceli meistri sõpradelt Exceli kohta nõu. Tänane mõte mõelda:

"Õun päevas hoiab VBA eemal."

Tom Urtis

Huvitavad Artiklid...