VBA sortiranje - Excel savjeti

Sadržaj

Excel VBA Macro za razvrstavanje podataka. Ne sviđa mi se kako makro snimač stvara dodatni kôd za sortiranje. Razvrstavanje u Excelu VBA trebalo bi biti jednostavno. Jedan redak koda, sa stupcem za sortiranje, kojim putem (uzlazno ili silazno) i postoji li zaglavlje.

Gledaj video

  • Snimač makronaredbi programa Excel ne radi dobro s razvrstavanjem zapisa.
  • Pod uvjetom da se vaši podaci mogu odabrati pomoću Ctrl + * (poznat kao trenutna regija)
  • Pod uvjetom da ne sortirate po boji ili ikoni ili više od tri razine
  • Upotrijebite stari školski raspon (). CurrentRegion.Sort metodu u Excelu

Prijepis videozapisa

Naučite Excel od MrExcel Podcasta, Epizoda 2093: Sortiranje pomoću VBA

Hej, dobrodošao natrag na netcast, ja sam Bill Jelen. Današnje pitanje Jamesa iz Huntsvillea. James, koristio sam makro snimač za snimanje radnje sortiranja podataka. Pa recimo da je James trebao sortirati ove podatke po sektorima i kupcima. Dakle, izašli ste ovdje na karticu Pogled, Makronaredbe, Snimanje nove makronaredbe, SortMyReports, Tipka prečaca Ctrl - tamo ću upisati Shift + S i kliknuti U redu. U redu, onda odavde radimo: Data, Sort i želimo reći da želimo razvrstati po sektorima, a zatim dodati razinu i razvrstati po kupcu i kliknuti OK. Dolje u donjem lijevom kutu kliknite Stop Recording. U redu, znači tu je. Čini se da je uspjelo, zar ne?

Ali ovdje je problem: sutra ćete imati više podataka ili manje podataka ili, znate, bilo što drugo. A taj Snimljeni makronaredba je jednostavno užasan. Pogledajmo, napravit ću Alt + F8 i pogledati SortMyReport, uredit će to. U redu, i ovo je sve što su snimili tako SortFields.Clear, a zatim su postavili novu sortu sa SortFields.Add i oni su teško kodirani, a postoji 568 redaka i sve ostalo.

Vraćajući se u dan, bilo mi je jako, jako lako. U redu, a zatim su u programu Excel 2007 dodali Poredaj po ikoni, Poredaj po boji, Sortiraj po boji fonta, mogućnost sortiranja na 15 nivoa i sve je postalo stvarno, stvarno ludo. Dakle, više ne koristim Snimljeni makronaredbe. Jednostavno idem u old-school.

Sada ću se vratiti na Excel. Evo pravila za ovo sortiranje u staroj školi, u redu. Naslov iznad svakog stupca: taj naslov mora biti u jednom redu, a ne u dva reda. Ako gore imate naslove i u redu je imati naslove gore. Potreban vam je potpuno prazan redak između naslova i prvog naslova. Ako imate bilješke s desne strane: vaša supruga zove s popisom namirnica: „Hej, dušo, stani na putu kući. Uzmi mlijeko, jaja i votku. " Između vaših podataka i toga mora postojati potpuno prazan stupac. A ako su na dnu temeljne bilješke, pobrinite se da postoji potpuno prazan redak između zadnjeg bita podataka i tih bilješki.

Moj je cijeli cilj da bismo mogli doći do bilo koje ćelije: gornje stanice lijevog kuta s tim podacima i pritisnuti Ctrl + * i ona će odabrati podatke koji će se sortirati. Sada ću pritisnuti Ctrl +. koji nas vodi do ovog kuta, a zatim Ctrl +. odvest će nas u donji desni kut, Ctrl +. vodi nas u donji lijevi kut. U redu, pa ako će Ctrl + * pravilno odabrati vaše podatke, onda je sve sjajno. Ako svoj popis namirnica stavite u stupac H i vidimo da dolazimo ovdje i Ctrl + *, pa sada sortiramo popis namirnica kao dio stvari i vaš popis namirnica će se zeznuti. Ili ćemo poništiti: ako ovaj redak nije ovdje, sada radimo Ctrl + *, vidite da smo- sad će biti bez pojma jer više nemaju nijedan naslov, u redu?

Dakle, ako ćete koristiti moj kod, pobrinite se da su sva ta pravila istinita: nema sortiranja moje boje, nema sortiranja moje ikone, 3 ili manje razina sortiranja. Poništi, u redu. Dakle, evo što znamo: znamo da će svaki dan naši podaci početi u A5. Ako ne znamo koliko redaka ili koliko, pa čak i koliko stupaca možemo imati. Ne mogu zamisliti situaciju da se stupci izmjenjuju, ali sigurno će se broj redaka promijeniti. Dakle, Alt + F11, jednostavno ćemo krenuti od one gornje lijeve kutne ćelije. Dakle, raspon, u mom slučaju je "A5" .Trenutna regija. Trenutna regija je ovo strašno svojstvo zgrade koje kaže da ćemo pritisnuti Ctrl + Shift + * i sve što je tamo uključeno bit će sortirano. I mi radimo. .Sređeno, u redu.

Sad je u tome stvar. Ako želite napraviti jednostupanjsku sortiranje, jednostavno je: Key1: =. : = i mi samo kažemo da će to biti domet - Oh, zaboravljam što je. Bio je Sektor, gdje je Sektor? Sektor je u stupcu C. Dakle, C5 u mom slučaju, domet ("C5"), a zatim, Order1: = xlAscending. Tamo sam pritisnuo tipku sa strelicom prema dolje, a zatim Tab. U redu, mogao bih nastaviti izlaziti udesno, ali to neću raditi. Idem na novi redak, tako da razmak, podvlaka da ide na novi redak, nastavlja ovaj redak koda, u redu? A ako imam sortiranje druge razine: Key2: = i u ovom slučaju želim sortirati prema kupcu koji je u stupcu D, dakle D5. A zatim, Order2: xlAscending. Lijep.

Nemam sortiranje treće razine, ali da jeste, to bi bio Key3, a zatim Order3. A onda ovaj sljedeći, onaj koji moraš učiniti je Header, u redu? Dakle, Header: = xlGuess, tu ćete dobiti puno problema. I tako ćemo tamo reći xYYes, definitivno kao zaglavlje. Čak i u stara vremena, Macro Recorder koristio bi xlGuess. Mrzim što Excel pogađa.

To je to. Jedan redak koda, to je sve što morate učiniti i radit će s više redaka, manje redaka. To je lijepa, lijepa stvar. U redu, pa vratit ćemo se ovdje u Excel. Ctrl + Shift + S je i dalje ono što se dodjeljuje. Sad je - Ako ste se upravo prebacili na VBA i sami to upišete, možete otići na Alt + F8, pronaći ime svog Makronaredbe, kliknuti Opcije i tamo upisati Ctrl + Shift + S ili ga čak možemo dodijeliti Tipka prečaca ovdje na alatnoj traci za brzi pristup. Desni klik, Prilagodi alatnu traku za brzi pristup na mjestu na kojem ja biram između naših makronaredbi. Imam makronaredbu koja se zove SortMyReport, kliknut će Dodaj - mrzim mali dijagram toka tamo. Izmijenit ćemo to i volio bih da tamo postoji neka vrsta situacije od A do Ž, ali naravno da nema. Možda ona strelica tko zna, tko zna, samo bilo što odabere.Čarobna 8-kugla, ne znam. Odabrat ću ovog malog ovdje, kliknite U redu, kliknite U redu. U redu, sada su naši podaci poredani po datumu, ja biram - i nije važno što odabirem. Uvijek će se vratiti i razvrstati iz A5, kliknem malog i moji podaci su sada razvrstani po sektorima, unutar sektora, prema kupcima. Izvrsno radi, u redu?

Dakle, ako ste ljubitelj Makro snimača, iskreno vam želim sve najbolje. No, kod Macro Recorder danas je za sortiranje u VBA toliko jednostavniji; da biste se samo vratili, jednostavno upotrijebite ovaj, jedan redak koda.

Pa, ovo je obično mjesto na kojem vas pokušavam natjerati da kupite ovu knjigu, ali danas mislim da biste trebali pogledati ovu knjigu: Excel 2016 VBA i Macros, Tracy i ja. Vau! Pogledaj ovo. Nisam shvatio da postoji verzija na drugom jeziku. Dovršit ćemo vas u potpunosti prema krivulji učenja makronaredbi od snimanja vašeg prvog makronaredbe do koda koji vam treba.

Pa, jednostavni završetak za danas: Excel Macro Recorder ne obavlja dobar posao sa snimanjem, sortiranjem: pod uvjetom da se vaši podaci mogu odabrati pomoću Ctrl + * koji je poznat kao trenutno područje, pod uvjetom da ne sortirate poput boje ili ikone ili više od tri razine, samo sortirajte metodu old-school Range (). CurrentRegion.Sort u VBA.

Želim zahvaliti Jamesu što je poslao to pitanje. Želim vam zahvaliti što ste navratili. Vidimo se sljedeći put za još jedan prijenos od.

Preuzmi datoteku

Preuzmite datoteku uzorka ovdje: Podcast2093.xlsm

Zanimljivi članci...