Iepriekš programmā Podcast 2093 es parādīju vienkāršu VBA kārtošanu, kas darbojas, ja neveicat šķirošanu pēc krāsas. Šodien Neeta lūdz VBA kārtot Excel datus pēc krāsas.
Visgrūtākais kārtošanā pēc VBA ir noskaidrot, kurus RGB krāsu kodus jūs izmantojat. 99% gadījumu jūs neizvēlējāties krāsu, ievadot RGB vērtības. Jūs izvēlējāties krāsu, izmantojot šo Excel nolaižamo izvēlni.
Lai gan jūs varētu izmantot Aizpildīt, Vairāk krāsu, Pielāgots, lai uzzinātu, ka izvēlētā krāsa ir RGB (112,48,160), tas ir apgrūtinājums, ja jums ir daudz krāsu.
Tātad - es gribētu ieslēgt makro reģistratoru un ļaut makro reģistratoram izdomāt kodu. Makro reģistratora ģenerētais kods nekad nav ideāls. Šeit ir video, kurā parādīts, kā izmantot makro reģistratoru, kārtojot pēc krāsas.
Video atšifrējums
Uzziniet programmu Excel no Podcast, Episode 2186: VBA Kārtot pēc krāsas.
Sveiki, sveicināti atkal netcast ēterā, es esmu Bils Jelens. Šodienas jautājums, nosūtīts vietnē YouTube. Man tur bija video par to, kā kārtot ar VBA, un viņi vēlējās kārtot pēc krāsas ar VBA, kas ir daudz sarežģītāk. Es teicu: "Kāpēc jūs vienkārši neieslēdzat makro reģistratoru un redzat, kas notiek?" Un, diemžēl, makro reģistrators, jūs zināt, tas mūs tuvina, bet tas mūs nenonāk līdz galam.
Tātad skats, makro, ierakstu makro, "HowToSortByColor", makro glabāšana šajā darbgrāmatā - ideāls. Noklikšķiniet uz Labi. Labi, tāpēc tagad darbojas makro reģistrators, mēs ejam šeit uz cilni Dati un teiksim Kārtot. Mēs izmantosim dialoglodziņu Kārtot un izveidosim to, labi? Tātad, mēs teiksim, ka mēs vēlamies pievienot līmeni Kārtot uz ķiršu, bet ne Kārtot uz šūnu vērtībām; mēs kārtosim uz šūnu krāsu - šūnu krāsa ir aizpildījuma krāsa - un mēs vēlamies virsū uzlikt sarkanu krāsu, pēc tam nokopēt šo līmeni un otrajā vietā ievietot dzelteno krāsu; un pēc tam mēs pievienosim jaunu līmeni - mēs pāriet uz D kolonnu, kolonnu Datums - vispirms kārtot uz šūnu krāsu, sarkanu, nokopēt šo līmeni, dzeltenu un pēc tam šeit; toreiz, šeit, Elderberry, E slejā, ir daži zili fonti, kurus es nevēlos redzēt, kā tas izskatījās,tāpēc mēs to pievienosim kā Sort on Font krāsu ar zilu krāsu augšpusē; un tad, ja šie visi ir vienādi bez krāsām, mēs pievienosim vienu galīgo līmeni tikai kolonnā A - šūnu vērtības, no lielākajām līdz mazākajām; un noklikšķiniet uz Labi.
Labi, tagad, pāris lietas - neizlaidiet šo nākamo soli - jūsu failu, tagad es garantēju, ka jūs esat saglabāts kā xlsx. Šis ir lielisks laiks, lai veiktu failu, saglabātu kā un saglabātu to kā xlsm vai xlsb. Ja jūs to nedarīsit, saglabājot šo failu, viss jūsu darbs līdz šim brīdim tiks zaudēts. Viņi izdzēsīs visu, kas glabājas xlsx, makro. Labi?
Tāpēc mēs tur pārtraucām ierakstīt, un tad mēs vēlamies doties apskatīt savus makro. Tātad, to varat izdarīt, izmantojot View, Macros-- View, Macros-- un atrodot tikko ierakstīto makro - HowToSortByColor - un noklikšķiniet uz Rediģēt. Labi, tāpēc šeit ir mūsu makro, un, to aplūkojot, mums ir problēma, šodien mums gadās būt 25 rindas plus virsraksts. Tātad tas nonāk 26. rindā. Un viņi ir grūti kodējuši, ka viņi vienmēr skatīsies uz 26. rindu.
Bet, kad es par to domāju, it īpaši salīdzinot ar veco VBA šķirošanai, mums nav jānorāda viss diapazons - tikai viena aile kolonnā. Tāpēc visur, kur viņiem ir sleja C26, es to samazināšu, lai vienkārši teiktu: "Hei, nē, apskatiet šīs kolonnas pirmo šūnu". Tātad E2, un tad, lūk, A2. Tāpēc manā gadījumā man bija jāmaina 1, 2, 3, 4, 5, 6, kārtošanas līmeņi - 6 lietas.
Un tad šī ir daļa, kas makro reģistratoram kļūst ļoti, ļoti slikta, vai viņi visu laiku kārtos tikai 26. rindas. Tāpēc es to mainīšu. Es teikšu: "Skatieties, sāciet diapazonā A21 un paplašiniet to līdz .CurrentRegion." Apskatīsim Excel un redzēsim, ko tas dara. Tātad, ja es izvēlētos tikai vienu šūnu - A1 vai kaut ko citu - un nospiediet Ctrl + *, tā atlasa pašreizējo reģionu. Labi, darīsim to. Šeit, sākot no vidus, Ctrl + * un ko tas dara, vai tas stiepjas visos virzienos, līdz nokļūst izklājlapas malā, izklājlapas augšdaļā vai datu labajā malā vai datu apakšējā malā . Tātad, sakot A1 .CurrentRegion, tas ir tāpat kā pārejot uz A1 un nospiežot Ctrl + *. Labi? Tātad, šeit jums ir jāmaina šī lieta. Tagad viss pārējais makro ir kārtībā; tas 's visi iet uz darbu. Viņi ieguva SortOnCellColor un SortOnFontColor un xlSortOn. Man par to nav jāuztraucas; viss, kas man jādara, ir ieskatīties šeit un redzēt, ka viņi stingri kodēja reģionu, kuru gatavojās izmantot diapazonam, stingri kodēja, cik tālu tie gāja, un tas nav grūti jākodē. Ar šo vienkāršo darbību, mainot šos sešus priekšmetus un septīto, mums ir kaut kas tāds, kam vajadzētu darboties.
Tagad veiksim pārbaudi. Atgriezīsimies šeit, izmantojot programmu Excel, un apakšā pievienosim dažas jaunas rindas. Es tikko ievietošu tur 11, un mēs pievienosim pāris sarkanos - sarkanu, dzeltenu un pēc tam šeit zilu. Labi. Tātad, ja mēs ejam palaist šo kodu - palaist šo kodu, tāpēc es noklikšķiniet šeit un noklikšķiniet uz pogas Izpildīt - un pēc tam atgriezos, mums vajadzētu redzēt, ka šis 11 kļuva par augšējo vienumu sarkanā krāsā, un tas parādījās tur dzeltenīgi, un tas parādās zilā krāsā, tāpēc tas viss darbojas nevainojami. Kāpēc tas nonāca augšgalā? Tā kā notika, ka pēdējais veids ir A kolonna, un, ja ir neizšķirts, tas izskatās kā A kolonna kā sasitējs. Tātad šis kods darbojas.
Lai iemācītos rakstīt VBA, es kopā ar Treisiju Sirstadu esmu sarakstījis virkni grāmatu, Excel VBA un MACROS. Tagad ir izdevums par 2003., 2007., 2010., 2013. un 2016. gadu; drīz 2019. Labi, tāpēc atrodiet versiju, kas atbilst jūsu Excel versijai, un tas ļaus jums nokļūt mācību līknē.
Apkopošana: šodienas epizode ir: Kā izmantot VBA, lai kārtotu pēc krāsas. Vieglākais veids, kā to izdarīt, jo īpaši tāpēc, ka nezināt, kādi RGB kodi tika izmantoti katrai krāsai - jūs vienkārši izvēlējāties sarkanu, nezināt, kāds ir RGB kods, un nevēlaties iet meklēt it up - ieslēdziet makro reģistratoru, izmantojot View, Macros, Record New Macro. Kad esat pabeidzis kārtošanu, noklikšķiniet uz Pārtraukt ierakstīšanu - tas atrodas apakšējā kreisajā stūrī - Alt + F8, lai redzētu makro sarakstu, vai View, Macros, View Macro - cilne View, Macros un tad skatiet makro - tas ir mulsinoši. PS Izvēlieties savu makro un noklikšķiniet uz Rediģēt, un jebkurā laikā, kad redzat C2 uz dažiem diapazona numuriem, vienkārši nomainiet to uz 2. rindu. Un tad, kur tie norāda kārtojamo diapazonu, diapazons ("A1") un CurrentRegion tiks paplašināts. Labi.
Nu, hei, es gribu pateikties, ka apstājāties. Tiksimies nākamreiz uz citu netcast no.
Video es iestatīju sešu līmeņu kārtošanu. Šeit tiek parādīts beigu dialoglodziņš:
Dienā, kad man gadījās ierakstīt makro, man bija 23 datu rindas plus virsraksts. Makro bija septiņas vietas, kas stingri kodēja rindu skaitu. Tie ir jāpielāgo.
Katram kārtošanas līmenim ir šāds kods:
ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add(Range("C2:C24"), _ xlSortOnCellColor, xlAscending, , _ xlSortNormal).SortOnValue.Color = RGB(255, 0, 0)
Tas ir dumjš, ka makro reģistrators norāda C2: C24. Kolonnā ir jānorāda tikai viena šūna, tāpēc mainiet pirmo iepriekšējo rindu uz:
ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add(Range("C2"), _
Veiciet līdzīgas izmaiņas katram no šķirošanas līmeņiem.
Tuvu ierakstītā makro beigām jums ir ierakstītais kods, lai faktiski kārtotu. Tas sākas šādi:
With ActiveWorkbook.Worksheets("Sheet2").Sort .SetRange Range("A1:E24") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Tā vietā, lai kārtotu tikai A1: E24, mainiet kodu, lai sāktu ar A1 un paplašinātu līdz pašreizējam reģionam. (Pašreizējais reģions ir tas, ko iegūstat, ja šūnā nospiežat taustiņu kombināciju Ctrl + *).
.SetRange Range("A1").CurrentRegion
Galīgais videoklipā redzamais kods ir:
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
Piezīme
Visticamāk, ka jūsu darbgrāmata ir saglabāta ar paplašinājumu XLSX. Veiciet Saglabāt kā, lai pārslēgtos uz paplašinājumu XLSM vai XLSB. Visi XLSX saglabātie makro tiek izdzēsti.
Excel dienas doma
Esmu lūdzis saviem Excel Master draugiem padomu par Excel. Šodienas doma apdomāt:
"Ābols dienā attur VBA."
Toms Urtis