Екцел сортирање по боји помоћу ВБА - Екцел савети

Претходно у Подцаст 2093, показао сам једноставну ВБА сортирање која функционише ако не сортирате по боји. Данас Неета тражи да ВБА сортира Екцел податке по боји.

Најтежа ствар код сортирања по ВБА је откривање РГБ кодова боја које користите. У 99% случајева нисте одабрали боју уношењем РГБ вредности. Боју сте изабрали помоћу овог падајућег менија у програму Екцел.

Већина људи бира боју за попуњавање или фонт помоћу овог падајућег менија

И док бисте могли да користите Испуни, Више боја, Прилагођено да бисте сазнали да је изабрана боја РГБ (112,48,160), то је гњаважа ако имате пуно боја.

РГБ кодови су скривени у овом дијалогу

Дакле - више волим да укључим макро снимач и пустим да макро снимач схвати код. Код који генерише макро снимач никада није савршен. Ево видео снимка који показује како се користи макро рекордер при сортирању по боји.

Видео транскрипт

Научите Екцел из Подцаста, епизода 2186: ВБА Сортирај по боји.

Хеј, добродошао назад на нетцаст, ја сам Билл Јелен. Данашње питање, послато на ИоуТубе. Имао сам видео о томе како да сортирам са ВБА, а они су желели да сортирају по боји са ВБА, што је много сложеније. Рекао сам, "Зашто једноставно не укључите макро снимач и не видите шта ће се догодити?" И, на жалост, макро рекордер, знате, приближава нас, али нас не води тамо скроз.

Дакле, Виев, Мацрос, Рецорд Мацро, "ХовТоСортБиЦолор", Сторе Мацро ин Тхис Воркбоок-- перфецт. Кликните ОК. У реду, дакле, макро снимач сада ради, доћи ћемо овде на картицу Подаци и рећи ћемо Сортирај. Користићемо дијалошки оквир Сорт и направићемо ово, у реду? Дакле, рећи ћемо да желимо да додамо ниво Сортирај по трешњи, али не и Сортирај по ћелијским вредностима; сортираћемо по боји ћелије - Боја ћелије је тамо боја испуне - и желимо ставити црвену на врх, а затим копирати тај ниво, а жуту ставити на друго место; а затим ћемо додати нови ниво - прећи ћемо на колону Д, колону са датумима - Поредати по боји ћелије, прво црвено, копирати тај ниво, жуто, а затим овде; а онда, овде у Елдерберри-у, колона Е, постоји неколико плавих фонтова, не желим да видим како је то изгледало,па ћемо то додати као боју сортирања по фонту са плавом бојом на врху; а онда ако су све ово кравата без икаквих боја, додаћемо један завршни ниво само на колони А - Вредности ћелија, највеће до најмање; и кликните ОК.

Добро, сада, пар ствари - немојте прескочити следећи корак - ваша датотека, тренутно, гарантујем да сте сачувани као клск. Ово је сјајно време да направите Филе, Саве Ас и сачувате као клсм или клсб. Ако то не учините, сав ваш рад до овог тренутка биће изгубљен када сачувате ову датотеку. Они ће избрисати макронаредбе било чега што је сачувано у клск. У реду?

Па смо тамо престали да снимамо, а затим желимо да погледамо своје макрое. Дакле, то можете учинити помоћу Виев, Мацрос - Виев, Мацрос - и пронаћи макро који смо управо снимили - ХовТоСортБиЦолор - и кликнути Едит. У реду, ево нашег макронаредбе, и док гледам на ово, проблем који имамо је да данас имамо 25 редова плус наслов. Дакле, спушта се на ред 26. И они су тешко кодирали да ће увек гледати доле до редова 26.

Али док размишљам о овоме, посебно у поређењу са старим ВБА за сортирање, не морамо да наведемо читав опсег - само једну ћелију у колони. Дакле, било где где имају колону Ц26, смањићу је да кажем само: „Хеј, не, погледајте прву ћелију у тој колони“. Дакле Е2, а затим, овде, А2. Дакле, у мом случају сам имао 1, 2, 3, 4, 5, 6 нивоа разврставања - 6 ствари које морам променити.

А онда је ово део који макро снимач постаје јако, јако лош, јер ће све време сортирати само у редове 26. Па ћу ово променити. Рећи ћу: „Погледајте, почните од домета А21 и проширите га на .ЦуррентРегион.“ Хајде да погледамо Екцел и видимо шта то ради. Дакле, ако бих само изабрао било коју ћелију - А1 или било шта друго - и притиснуо Цтрл + *, она бира тренутни Регион. У реду, урадимо то. Овде, од средине, Цтрл + *, и шта то чини, протеже се у свим правцима док не удари у ивицу прорачунске табеле, на врх прорачунске табеле или на десну ивицу података или доњу ивицу података . Дакле, изговарањем А1 .ЦуррентРегион, то је као да идете на А1 и притиснете Цтрл + *. У реду? Дакле, овде морате да промените ту ствар. Сада је све остало у макроу у реду; то'сви иду на посао. Добили су СортОнЦеллЦолор и СортОнФонтЦолор и клСортОн. Не морам да бринем ни о чему од тога; све што морам да урадим је да погледам овде и видим да су они тешко кодирали регион који ће користити за асортиман, тврдо кодирали докле су они отишли, и не мора бити тешко кодиран. И тим једноставним кораком, променом тих шест ставки и седмом ставком, имамо нешто што би требало да успе.

Хајде сада да направимо тест. Вратимо се овде у Екцел и додаћемо неке нове редове на дну. Само ћу тамо ставити 11, а ми ћемо додати неколико црвених - црвену, жуту, а затим овде плаву. У реду. Дакле, ако кренемо са овим кодом - покренемо овај код, па кликнем овде и кликнем на дугме Покрени - и онда се вратимо, требали бисмо видети да је тих 11 постало главна ставка у црвеној боји, она се појавила тамо у жуте, и то се појављује у блуесу, тако да све то савршено функционише. Зашто је ишло на врх? Јер се десило да је последња сорта колона А, па када је нерешено, изгледа да је колона А као прекидач. Дакле, тај код делује.

Да бих научио како да пишем ВБА, заједно са Траци Сирстад написао сам серију књига, Екцел ВБА и МАЦРОС. Сада постоји издање за 2003, 2007, 2010, 2013 и 2016; ускоро 2019. У реду, потражите верзију која се подудара са вашом верзијом програма Екцел и ово ће вас подићи у криву учења.

Закључак: Данашња епизода гласи: Како користити ВБА за сортирање по боји. Најлакши начин за то, поготово јер не знате који су РГБ кодови коришћени за сваку од боја - управо сте изабрали црвену, не знате који је РГБ код и не желите да идете да тражите то уп-- укључите макро снимач помоћу Виев, Мацрос, Рецорд Нев Мацро. Када завршите са сортирањем, кликните Стоп Рецординг - заустави снимање - налази се у доњем левом углу - Алт + Ф8 да бисте видели листу макронаредби или Виев, Мацрос, Виев Мацро - картица Виев, Мацрос и затим Виев Мацрос - то је збуњујуће. ПС Изаберите макро и кликните Уреди, и кад год видите Ц2 на неке бројеве опсега, само га промените у тачку 2. ред. А онда, тамо где они одреде опсег за сортирање, опсег ("А1"), ЦуррентРегион, ће се проширити. У реду.

Па, хеј, желим да ти се захвалим што си свратио, видимо се следећи пут за још један пренос од.

У видеу сам поставио сортирање у шест нивоа. Завршни дијалошки оквир је приказан овде:

Поредај по црвеној, жутој у Ц, црвеној, жутој у д, плавој у е, бројевима у а

На дан када сам случајно снимио макро, имао сам 23 реда података плус наслов. У макронаредби је било седам места која су тешко кодирала број редова. Они се морају прилагодити.

За сваки ниво сортирања постоји овакав код:

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

Глупо је што макро снимач наводи Ц2: Ц24. Морате да наведете само једну ћелију у колони, па промените први горњи ред у:

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

Направите сличну промену за сваки од нивоа сортирања.

При крају снимљеног макронаредбе имате снимљени код који ће заиста извршити сортирање. Све почиње овако:

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

Уместо да сортирате само А1: Е24, промените код да започне у А1 и проширите се на тренутни регион. (Тренутни регион добијате ако притиснете Цтрл + * из ћелије).

.SetRange Range("A1").CurrentRegion

Коначни код приказан у видеу је:

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

Белешка

Вероватно је да је ваша радна свеска сачувана са КСЛСКС наставком. Направите Саве Ас да бисте прешли на КСЛСМ или КСЛСБ додатак. Сви макрои сачувани у КСЛСКС се бришу.

Екцел мисао дана

Питао сам своје пријатеље из програма Екцел Мастер за савет о програму Екцел. Данашња мисао за размишљање:

„Јабука дневно спречава ВБА.“

Том Уртис

Занимљиви Чланци...