Razvrstitev po VBA - nasveti za Excel

Excel VBA Macro za razvrščanje podatkov. Ni mi všeč, kako snemalnik makrov ustvari dodatno kodo za razvrščanje. Razvrščanje v Excelu VBA mora biti preprosto. Ena vrstica kode s stolpcem za razvrščanje, v katero smer (naraščajoče ali padajoče) in ali obstaja glava.

Oglejte si video

  • Snemalnik makrov programa Excel z razvrščanjem posnetkov ne opravi dobro.
  • Pod pogojem, da lahko podatke izberete s kombinacijo tipk Ctrl + * (znano kot trenutna regija)
  • Pod pogojem, da ne razvrščate po barvi ali ikoni ali več kot treh ravneh
  • Uporabite metodo stare šole Range (). CurrentRegion.Sort v Excelu

Video zapis

Naučite se Excel iz MrExcel Podcast, Epizoda 2093: Razvrščanje z VBA

Hej, dobrodošli nazaj na netcastu, jaz sem Bill Jelen. Današnje vprašanje Jamesa iz Huntsvillea. James, z makro snemalnikom sem posnel dejanje razvrščanja podatkov. Recimo, da je James moral te podatke razvrstiti po sektorjih in kupcih. Torej pridete sem na zavihek Pogled, Makri, Snemanje novega makra, SortMyReports, Bližnjična tipka Ctrl - tam vtipkam Shift + S in kliknem V redu. V redu, potem od tu naredimo: Podatki, Razvrsti in želimo reči, da želimo Razvrsti po sektorju, nato Dodaj raven in Razvrsti po stranki in kliknite V redu. Spodaj v spodnjem levem kotu kliknemo Stop Recording. V redu, torej je. Zdi se, da je delovalo, kajne?

Ampak tukaj je težava: jutri boste imeli več podatkov ali manj podatkov ali, veste, karkoli že. In ta posneti makro je prav grozljiv. Poglejmo, naredil bom Alt + F8 in pogledal SortMyReport, bo to uredil. V redu, in to je vse, kar so posneli tako SortFields.Clear, nato pa so s SortFields.nastavili novo sorto. Add in so trdo kodirani, 568 vrstic in vseh stvari.

Zdaj, ko sem razvrščal nazaj, sem bil res zelo lahek. V redu, nato pa so v Excelu 2007 dodali Razvrsti po ikoni, Razvrsti po barvi, Razvrsti po barvi pisave, možnost razvrščanja po 15 nivojih in vse je postalo res, res noro. Torej, posnetega makra ne uporabljam več. Samo hodim v staro šolo.

Zdaj se bom vrnil v Excel. Tukaj so pravila, kako lahko to sortiranje v stari šoli deluje. Naslov nad vsakim stolpcem: naslov mora biti v eni vrstici in ne v dveh vrsticah. Če imate zgoraj naslove in je v redu, če imate naslove tam zgoraj. Med naslovi in ​​prvim naslovom potrebujete popolnoma prazno vrstico. Če imate na desni strani opombe: vaša žena pokliče s seznamom živil: »Hej, draga, nehaj na poti domov. Vzemi mleko, jajca in vodko. " Med vašimi podatki mora biti popolnoma prazen stolpec. In če so na dnu opombe z vzorci, poskrbite, da je med zadnjim bitom podatkov in temi opombami povsem prazna vrstica.

Moj celoten cilj je, da bi lahko prišli do katere koli celice: v zgornjem levem kotu so ti podatki in pritisnite Ctrl + * in izbral bo podatke, ki jih želite razvrstiti. Zdaj bom pritisnil Ctrl +. ki nas pripelje do tega vogala in nato Ctrl +. nas bo pripeljal do spodnjega desnega kota, Ctrl +. nas pripelje v spodnji levi kot. Torej, če bo Ctrl + * pravilno izbral vaše podatke, je vse v redu. Če svoj seznam živil postavite v stolpec H in vidimo, da smo prišli sem in Ctrl + *, zdaj razvrščamo seznam živil kot del stvari in vaš seznam živil bo pokvarjen. Ali pa bomo razveljavili: če te vrstice ni tukaj, zdaj naredimo Ctrl + *, glej, zdaj bomo brez vesti, ker nimajo več naslovov, v redu?

Torej, če boste uporabljali mojo kodo, se prepričajte, da so vsa ta pravila resnična: brez razvrščanja moje barve, brez razvrščanja moje ikone, 3 ali manj ravni razvrščanja. Razveljavi, v redu. Tukaj je torej tisto, kar vemo: vemo, da se bodo naši podatki vsak dan začeli v A5. Če ne vemo, koliko vrstic ali koliko - celo celo koliko stolpcev imamo. Ne predstavljam si situacije, ko bi se stolpci zamenjali, zagotovo pa se bo število vrstic spremenilo. Torej Alt + F11, preprosto bomo začeli od zgornje leve vogalne celice. Torej Range, v mojem primeru je "A5" .CurrentRegion. Trenutna regija je ta izjemna lastnost stavbe, ki pravi, da bomo pritisnili Ctrl + Shift + * in vse, kar je tam vključeno, bo razvrščeno. In mi. Razvrsti. .Vredu, v redu.

Zdaj, tukaj je stvar. Če želite enostopenjsko razvrščanje narediti enostavno: Tipka1: =. : = in samo rečemo, da bo Range - Oh, pozabil sem, kaj je. Sektor je bil, kje je Sektor? Sektor je v stolpcu C. Torej C5 v mojem primeru, obseg (“C5”) in nato, Order1: = xlAscending. Tam sem pritisnil puščico dol in nato Tab. Zdaj, lahko bi šel naprej v desno, vendar tega ne bom počel. Grem v novo vrstico, tako da presledek, podčrtaj, da grem v novo vrstico, nadaljuje to vrstico kode, v redu? In če imam drugo stopnjo razvrščanja: Key2: = in v tem primeru želim razvrstiti po kupcu, ki je v stolpcu D, torej D5. In potem, Order2: xlAscending. Čudovito.

Nimam razvrščanja tretje stopnje, če pa bi bilo, bi to bil Key3 in nato Order3. In potem ta naslednji, tisti, ki ga moraš narediti, je Header, v redu? Torej, Header: = xlGuss, tu imate velike težave. In tam bomo rekli xl DA, vsekakor kot Glava. Tudi v starih časih bi Macro Recorder uporabljal xlGuess. Sovražim Excel, da ugiba.

To je to. Ena vrstica kode, to je vse, kar morate storiti in bo delovala z več vrsticami in manj vrsticami. To je lepa, lepa stvar. V redu, zato se bomo vrnili sem, v Excel. Ctrl + Shift + S je še vedno dodeljena stvar. Zdaj - Če ste pravkar preklopili na VBA in to vtipkate sami, lahko odprete Alt + F8, poiščete ime svojega makra, kliknete Možnosti in tam vnesete Ctrl + Shift + S ali pa ga celo dodelimo Bližnjična tipka tukaj v orodni vrstici za hitri dostop. Z desno tipko miške kliknite Prilagodi orodno vrstico za hitri dostop, kjer izbiram med našimi makri. Imam makro z imenom SortMyReport, kliknil bom Dodaj - sovražim mali diagram poteka. To bomo spremenili in rad bi, da bi tam obstajala nekakšna situacija od A do Ž, seveda pa je ni. Mogoče tista puščica, ki ve, kdo ve, samo izberite kaj.Čarobna 8-žogica, ne vem. Tukaj bom izbral tega moškega, kliknite V redu, kliknite V redu. Torej, zdaj so naši podatki razvrščeni po datumu, jaz izberem - in ni vseeno, kaj izberem. Vedno se bo vrnil in razvrstil iz A5, kliknem moškega in moji podatki so zdaj razvrščeni po sektorjih, znotraj sektorja, po strankah. Odlično deluje, v redu?

Torej, če ste ljubitelj Macro Recorderja, vam iskreno iskreno želim. Toda danes je koda Macro Recorder za razvrščanje v VBA preprosto toliko preprostejša; če se želite vrniti nazaj, preprosto uporabite v bistvu to, eno vrstico kode.

No, to je običajno kraj, kjer vas poskušam pridobiti za nakup te knjige, toda danes mislim, da bi si morali ogledati to knjigo: Excel 2016 VBA in Macros avtorja Tracy in mene samega. Vau! Poglej to. Nisem vedel, da obstaja različica v drugem jeziku. Popolnoma vas bomo pripeljali do krivulje učenja makronaredbe od snemanja vašega prvega makra do kode, ki jo potrebujete.

No, preprost zaključek za danes: Excel Macro Recorder s snemanjem in razvrščanjem ne deluje dobro: pod pogojem, da ne razvrščate po barvi ali ikoni, lahko podatke izberete s kombinacijo tipk Ctrl + *, ki je znana kot trenutna regija ali več kot tri ravni, za razvrščanje uporabite samo metodo Old Range Range (). CurrentRegion.Sort v VBA.

Želim se zahvaliti Jamesu, da je poslal to vprašanje. Zahvaljujem se vam, da ste se ustavili. Se vidimo naslednjič za še eno oddajo iz.

Prenesite datoteko

Prenesite vzorčno datoteko tukaj: Podcast2093.xlsm

Zanimive Članki...