VBA Rūšiuoti - „Excel“ patarimai

„Excel VBA“ makrokomanda duomenims rūšiuoti. Man nepatinka, kaip makrokomandas sukuria papildomą kodą rūšiavimui. Rūšiavimas „Excel VBA“ turėtų būti paprastas. Viena kodo eilutė su stulpeliu, kurį rūšiuoti, į kurią pusę (kylančią ar mažėjančią) ir ar yra antraštė.

Žiūrėti video

  • „Excel“ makrokomandos įrašymo rūšiavimas nėra geras darbas.
  • Jei jūsų duomenis galima pasirinkti naudojant „Ctrl“ + * (žinomas kaip dabartinis regionas)
  • Su sąlyga, kad nerūšiuojate pagal spalvą ar piktogramą arba daugiau nei tris lygius
  • Naudokite senosios mokyklos diapazoną (). CurrentRegion.Sort metodas „Excel“

Vaizdo įrašo nuorašas

Sužinokite „Excel“ iš „MrExcel Podcast“, 2093 serija: rūšiavimas naudojant VBA

Ei, sveiki sugrįžę į netcast'ą, aš Billas Jelenas. Šiandien Jameso klausimas Huntsvilyje. Jamesai, aš naudoju makrokomandą įrašyti duomenų rūšiavimo veiksmus. Tarkime, kad Jamesui reikėjo rūšiuoti šiuos duomenis pagal sektorius ir klientus. Taigi čia išeinate į skirtuką Rodinys, Makrokomandos, Įrašyti naują makrokomandą, „SortMyReports“, Spartusis klavišas „Ctrl“ - ten įvesiu „Shift“ + S ir spustelėkite Gerai. Gerai, taigi tada darome iš čia: duomenys, rūšiavimas ir norime pasakyti, kad norime rūšiuoti pagal sektorius, tada pridėti lygį ir rūšiuoti pagal klientą ir spustelėkite Gerai. Apatiniame kairiajame kampe apačioje spustelėkite „Stop Recording“. Gerai, taip yra. Atrodo, kad dirbo, tiesa?

Bet čia yra problema: rytoj turėsite daugiau duomenų arba mažiau duomenų, ar žinote, bet ką. Ir tas įrašytas makrokomandas yra tiesiog siaubingas. Pažvelkime, aš atliksiu Alt + F8 ir pažvelgsiu į „SortMyReport“, tai redaguosiu. Gerai, ir tai yra viskas, ką jie įrašė, kad „SortFields“. Išvalykite, tada jie nustatė naują rūšiavimą naudodami „SortFields“. Pridėti ir jie yra sunkiai užkoduoti, ir yra 568 eilutės ir visa kita.

Dabar rūšiuoju tą dieną, man buvo tikrai labai lengva. Gerai, tada „Excel 2007“ jie pridėjo Rūšiuoti pagal piktogramą, Rūšiuoti pagal spalvas, Rūšiuoti pagal šrifto spalvą, galimybę turėti 15 lygių rūšiavimą ir viskas tiesiog labai išprotėjo. Taigi, aš daugiau nenaudoju įrašyto makrokomandos. Aš tiesiog einu į senąją mokyklą.

Dabar pereisiu prie „Excel“. Gerai, šios senosios mokyklos rūšiavimo į darbą taisyklės. Antraštė virš kiekvieno stulpelio: ta antraštė turi būti vienoje, o ne dviejose eilutėse. Jei turite titulų viršuje ir gerai, kad turite titulų. Jums reikia visiškai tuščios eilutės tarp pavadinimų ir pirmos antraštės. Jei dešinėje pusėje turite užrašų: jūsų žmona skambina su maisto prekių sąrašu: „Ei, mieloji, sustok pakeliui namo. Gaukite pieno, kiaušinių ir degtinės “. Tarp jūsų duomenų ir to turi būti visiškai tuščias stulpelis. Ir jei apačioje yra katilinės pastabos, įsitikinkite, kad tarp paskutinio duomenų kiekio ir tų užrašų yra visiškai tuščia eilutė.

Visas mano tikslas yra tai, kad mes galėtume patekti į bet kurią langelį: viršutiniame kairiajame kampe esančiuose langeliuose šiuos duomenis ir paspauskite Ctrl + *, ir jis pasirinks duomenis, kurie bus rūšiuojami. Dabar paspausiu „Ctrl +“. kuris nukels mus į šį kampą ir tada „Ctrl +“. nukels mus į apatinį dešinįjį kampą „Ctrl +“. nukelia mus į apatinį kairįjį kampą. Gerai, taigi, jei „Ctrl“ + * teisingai pasirinks jūsų duomenis, viskas bus puiku. Jei įdėsite savo maisto prekių sąrašą į H stulpelį ir pamatysime, kad čia patekome ir „Ctrl + *“, gerai, dabar mes rūšiuojame maisto prekių sąrašą kaip dalyko dalį ir jūsų maisto prekių sąrašas bus sugadintas. Arba mes anuliuosime: jei šios eilutės nėra, dabar darome „Ctrl“ + *, matome, kad dabar jie bus nesuprantami, nes nebeturi jokių antraščių, gerai?

Taigi, jei ketinate naudoti mano kodą, įsitikinkite, kad visos šios taisyklės yra teisingos: nerūšiuoti mano spalvos, nerūšiuoti piktogramos, 3 ar mažiau rūšiavimo lygių. Anuliuoti, gerai. Taigi, ką mes žinome: mes žinome, kad kiekvieną dieną mūsų duomenys bus pradėti nuo A5. Jei nežinome, kiek eilučių ar kiek - gerai, net kiek stulpelių galime turėti. Neįsivaizduoju situacijos, kai stulpeliai yra sukeisti, bet eilučių skaičius tikrai keisis. Taigi Alt + F11, mes tiesiog pradėsime nuo tos viršutinės kairiosios kampo langelio. Taigi diapazonas, mano atveju yra „A5“ .CurrentRegion. Dabartinis regionas yra tai nuostabi pastato nuosavybė, sakanti, kad paspausime „Ctrl“ + „Shift“ + *, ir viskas, kas ten yra, bus surūšiuota. Ir mes darome .Rūšiuoti. .Rūšiuoti, gerai.

Dabar štai kas. Jei norite atlikti vieno lygio rūšiavimą, lengva: Key1: =. : = ir mes tiesiog sakome, kad tai bus diapazonas - O aš pamirštu, kas tai yra. Tai buvo Sektorius, kur Sektorius? Sektorius yra C stulpelyje. Taigi mano atveju C5, diapazonas („C5“) ir tada „Order1“: = xlAscending. Aš ten paspaudžiau rodyklės žemyn klavišą ir tada „Tab“. Gerai, dabar galėčiau eiti į dešinę, bet to nedarysiu. Aš eisiu į naują eilutę, taigi tarpas, pabraukimas, norėdamas pereiti prie naujos eilutės, tęsia šią kodo eilutę, gerai? Ir jei turiu antro lygio rūšiavimą: Key2: = ir šiuo atveju noriu rūšiuoti pagal klientą, kuris yra D stulpelyje, taigi D5. Tada „Order2: xlAscending“. Graži.

Aš neturiu trečio lygio rūšiavimo, bet jei jūs tai padarytumėte, tai būtų „Key3“, tada „Order3“. Ir tada šis kitas, kurį turite padaryti, yra Antraštė, gerai? Taigi, antraštė: = xlSpėk, kad čia jūs patiriate daug problemų. Taigi mes ten pasakysime „xlYes“, tikrai kaip antraštę. Net senais laikais „Macro Recorder“ naudojo „xlGuess“. Nekenčiu, kad „Excel“ atspėtų.

Viskas. Viena kodo eilutė, tai viskas, ką turite padaryti, ir ji veiks su daugiau eilučių, mažiau eilučių. Tai gražus, gražus dalykas. Gerai, todėl grįšime čia į „Excel“. „Ctrl“ + „Shift“ + S vis dar yra priskirtas dalykas. Dabar - jei ką tik perėjote prie VBA ir pats įvedėte tai, galite pereiti prie Alt + F8, rasti savo makrokomandos pavadinimą, spustelėkite Parinktys ir įveskite Ctrl + Shift + S arba mes netgi galime jį priskirti Spartusis klavišas čia, greitosios prieigos įrankių juostoje. Dešiniuoju pelės mygtuku spustelėkite Tinkinti greitosios prieigos įrankių juostą, kur pasirenku iš mūsų makrokomandų. Turiu „Makrokomandą“, pavadintą „SortMyReport“, spustelės Pridėti - nekenčiu ten esančios mažos schemos. Mes tai pakeisime, ir aš norėčiau, kad ten būtų kažkokia situacija nuo A iki Z, bet, žinoma, nėra. Gal ta strėlė, kuri žino, kas žino, tiesiog ką nors išsirenka.Stebuklingas 8 kamuoliukas, aš nežinau. Aš ketinu pasirinkti šį mažą vaikiną čia, spustelėkite Gerai, spustelėkite Gerai. Gerai, todėl dabar mūsų duomenys yra rūšiuojami pagal datą, aš pasirenku - ir nesvarbu, ką pasirenku. Tai visada grįš ir surūšiuos iš A5, spusteliu mažą vaikiną ir mano duomenys dabar yra rūšiuojami pagal sektorius, sektorius, klientus. Tai puikiai veikia, gerai?

Taigi, jei esate „Macro Recorder“ gerbėjas, mano nuoširdžiausi linkėjimai jums. Tačiau „Macro Recorder“ kodas šiais laikais yra rūšiuojamas - rūšiuojamas pagal VBA; norėdami tiesiog grįžti atgal, paprasčiausiai naudokite šią vieną kodo eilutę.

Na, dažniausiai tai yra vieta, kur bandau priversti jus nusipirkti šią knygą, tačiau šiandien manau, kad turėtumėte pažvelgti į šią knygą: „Excel 2016 VBA“ ir „Tracy and Macros Macros“. Oho! Pažiūrėk. Nesupratau, kad yra versija kita kalba. Mes visiškai pakelsime „Macro“ mokymosi kreivę nuo pirmojo „Macro“ įrašymo iki jums reikalingo kodo.

Na, paprastas šios dienos užbaigimas: „Excel Macro Recorder“ blogai dirba su įrašymu, rūšiavimu: jei jūsų duomenis galima pasirinkti naudojant „Ctrl +“ *, kuris žinomas kaip dabartinis regionas, jei nerūšiuojate kaip spalva ar piktograma arba daugiau nei tris lygius, tiesiog naudokite senosios mokyklos diapazoną (). CurrentRegion.Sort metodas VBA rūšiuoti.

Noriu padėkoti Jamesui už šio klausimo išsiuntimą. Noriu padėkoti, kad užsukote. Pamatysime kitą kartą kitai internetinei transliacijai iš.

Atsisiųsti failą

Atsisiųskite failo pavyzdį čia: Podcast2093.xlsm

Įdomios straipsniai...