Triedenie VBA - tipy pre Excel

Makro programu Excel VBA na triedenie údajov. Nepáči sa mi, ako záznamník makier vytvára ďalší kód na triedenie. Zoradenie v Exceli VBA by malo byť jednoduché. Jeden riadok kódu so stĺpcom na zoradenie, ktorým smerom (vzostupne alebo zostupne) a je tam hlavička.

Pozeraj video

  • Záznamník makier programu Excel nerobí dobrú prácu so zoradením záznamov.
  • Za predpokladu, že vaše údaje môžu byť vybrané pomocou Ctrl + * (známe ako aktuálna oblasť)
  • Za predpokladu, že nie ste zoradení podľa farby alebo ikony alebo viac ako troch úrovní
  • Použite starú metódu Range (). CurrentRegion.Sort v programe Excel

Prepis videa

Naučte sa Excel z Podcastu MrExcel, epizóda 2093: Triedenie pomocou VBA

Ahoj, vitaj naspäť na netcast, som Bill Jelen. Dnešná otázka od Jamesa v Huntsville. James, použil som záznamník makier na zaznamenanie akcie triedenia údajov. Povedzme teda, že James potreboval tieto dáta zoradiť podľa sektoru a zákazníkov. Takže vyjdete sem na kartu Zobraziť, Makrá, Zaznamenať nové makro, SortMyReports, Klávesová skratka Ctrl - tam napíšem Shift + S a kliknete na OK. Dobre, takže odtiaľto urobíme: Údaje, Zoradiť a chceme povedať, že sa chceme zoradiť podľa sektoru, potom Pridať úroveň a Zoradiť podľa zákazníka a kliknúť na OK. Dole v ľavom dolnom rohu kliknite na Zastaviť nahrávanie. Dobre, tak to tu je. Zdá sa, že fungoval, však?

Ale tu je problém: zajtra budete mať viac alebo menej údajov alebo, viete, čokoľvek. A to Zaznamenané makro je jednoducho hrozné. Poďme sa pozrieť, urobím Alt + F8 a pozrieme sa na SortMyReport, upravím to. Dobre, a toto je všetko, čo zaznamenali, takže SortFields.Clear, a potom nastavia nové zoradenie pomocou SortFields.Add a budú napevno napísané a je tam 568 riadkov a všetko.

Teraz, keď som triedil deň, bolo to naozaj, naozaj ľahké. Dobre, a potom v programe Excel 2007 pridali možnosti Zoradiť podľa ikony, Zoradiť podľa farby, Zoradiť podľa farby písma, možnosť mať 15 úrovní zoradenia a všetko sa stalo naozaj, naozaj šialeným. Zaznamenané makro teda už nepoužívam. Idem len na starú školu.

Teraz sa prepnem späť do Excelu. Tu sú pravidlá fungovania tohto triedenia podľa starej školy, dobre. Nadpis nad každým stĺpcom: tento nadpis musí byť v jednom riadku, nie v dvoch riadkoch. Ak máte tituly hore a je dobré mať tituly hore. Medzi nadpismi a prvým nadpisom potrebujete úplne prázdny riadok. Ak máte poznámky napravo: vaša žena zavolá do zoznamu potravín: „Hej, zlatko, zastav sa po ceste domov. Získajte mlieko, vajcia a vodku. “ Medzi vašimi údajmi a týmito údajmi musí byť úplne prázdny stĺpec. A ak sú v dolnej časti štandardné poznámky, skontrolujte, či je medzi posledným bitom údajov a týmito poznámkami úplne prázdny riadok.

Celý môj cieľ je, že by sme mali byť schopní prísť do ktorejkoľvek jednej bunky: do bunky v ľavom hornom rohu tieto údaje a stlačiť Ctrl + * a vyberie údaje, ktoré sa majú zoradiť. Teraz stlačím Ctrl +. tým sa dostaneme do tohto rohu a potom Ctrl +. sa dostanete do pravého dolného rohu, Ctrl +. nás zavedie do ľavého dolného rohu. Dobre, takže ak Ctrl + * správne vyberie vaše údaje, potom je všetko super. Ak vložíte svoj zoznam potravín do stĺpca H a uvidíme, že prídeme sem a Ctrl + *, teraz triedime zoznam potravín ako súčasť veci a váš zoznam potravín bude skomolený. Alebo to vrátime späť: ak tento riadok tu nie je, urobíme teraz Ctrl + *, pozri sme - teraz budú bezradní, pretože už nemajú žiadne nadpisy, dobre?

Takže ak budete používať môj kód, uistite sa, že sú všetky tieto pravidlá pravdivé: žiadne triedenie mojej farby, žiadne triedenie mojej ikony, 3 alebo menej úrovní triedenia. Späť, v poriadku. Takže vieme, čo vieme: vieme, že každý deň naše údaje začnú v A5. Ak nevieme, koľko riadkov alebo koľko, tak dobre, koľko stĺpcov môžeme mať. Neviem si predstaviť situáciu, keď sú stĺpce zamieňané, ale určite sa bude meniť počet riadkov. Takže Alt + F11, jednoducho začneme z tejto bunky v ľavom hornom rohu. Takže Range, v mojom prípade je „A5“ .CurrentRegion. Aktuálny región je táto úžasná budova, ktorá hovorí, že stlačíme Ctrl + Shift + * a všetko, čo je tam zahrnuté, je to, čo sa bude triediť. A robíme. Triediť. .Triediť, dobre.

Teraz je to tak. Ak chcete vykonať jednoúrovňové triedenie, je to jednoduché: Key1: =. : = a my len hovoríme, že to bude Range - Oh, zabudol som, čo to je. Bol to Sektor, kde je Sektor? Sektor je v stĺpci C. Takže v mojom prípade C5, Range („C5“) a potom, Order1: = xlAscending. Stlačil som tam šípku dole a potom Tab. Dobre, teraz by som mohol ísť stále doprava, ale nebudem to robiť. Idem na nový riadok, takže medzera, podčiarknutie na nový riadok, pokračuje tento riadok kódu, dobre? A ak mám triedenie na druhej úrovni: Key2: = a v tomto prípade chcem triediť podľa zákazníka, ktorý je v stĺpci D, teda D5. A potom, Order2: xlAscending. Nádhera.

Nemám triedenie na tretej úrovni, ale ak by ste to urobili, bol by to Key3 a potom Order3. A potom tento ďalší, ten, ktorý musíš urobiť, je Hlavička, dobre? Takže záhlavie: = xlHádajte, že tu máte sakra veľa problémov. A tak tam povieme xlÁno, určite ako Hlavička. Aj za starých čias používal záznamník makier xlGuess. Nerád hádam Excel.

To je všetko. Jeden riadok kódu, to je všetko, čo musíte urobiť, a bude fungovať s viac riadkami, menej riadkami. Je to krásna, krásna vec. Dobre, takže sa vrátime sem do Excelu. Ctrl + Shift + S je stále priradená vec. Teraz - Ak ste práve prešli na VBA a sami to napíšete, môžete prejsť na Alt + F8, nájsť názov svojho makra, kliknúť na Možnosti a napísať tam Ctrl + Shift + S alebo ho dokonca môžeme priradiť k Klávesová skratka tu na paneli s nástrojmi Rýchly prístup. Pravým tlačidlom myši kliknite na ikonu Prispôsobiť panel s nástrojmi Rýchly prístup, kde si vyberám z našich makier. Mám makro s názvom SortMyReport, kliknem na Pridať - neznášam tam malý vývojový diagram. Upravíme to a bol by som rád, keby tam nastala nejaká situácia od A po Z, ale samozrejme nie. Možno ten šíp, kto vie, kto vie, si jednoducho vyberie čokoľvek.Čarovná 8-loptička, neviem. Tu si vyberiem tohto malého chlapca, kliknem na OK, kliknem na OK. Dobre, takže teraz sú naše dáta zoradené podľa dátumu, ktoré vyberám - a nezáleží na tom, čo si vyberiem. Vždy sa to vráti a zoradí to od A5, kliknem na malého chlapčeka a moje dáta sú teraz zoradené podľa sektoru, v rámci sektoru, podľa zákazníka. Funguje to skvele, dobre?

Takže ak ste fanúšikom záznamníka makier, srdečne vám želám všetko najlepšie. Ale kód makro rekordéra v dnešnej dobe na triedenie a triedenie vo VBA je oveľa jednoduchší; Ak sa chcete vrátiť späť, jednoducho použite v podstate tento jeden riadok kódu.

Toto je zvyčajne miesto, kde sa snažím prinútiť vás kúpiť si túto knihu, ale dnes si myslím, že by ste si mali túto knihu pozrieť: Excel 2016 VBA a Macros od Tracy a mňa samého. Wow! Pozri na toto. Neuvedomil som si, že existuje verzia v inom jazyku. Dostaneme vás úplne hore krivkou učenia makier od zaznamenania vášho prvého makra po požadovaný kód.

No, jednoduché zhrnutie pre dnešok: Program Excel Makro Recorder nerobí dobrú prácu so zaznamenávaním, triedením: za predpokladu, že vaše údaje je možné vybrať pomocou Ctrl + *, ktorý je známy ako aktuálna oblasť, za predpokladu, že ich netriedite podľa farby alebo ikony. alebo viac ako tri úrovne, stačí na triedenie použiť starú školu Range (). CurrentRegion.Sort.

Chcem poďakovať Jamesovi za zaslanie tejto otázky. Chcem vám poďakovať, že ste sa zastavili. Uvidíme sa nabudúce pri ďalšom netcaste z.

Stiahnuť súbor

Stiahnutie vzorového súboru nájdete tu: Podcast2093.xlsm

Zaujímavé články...