Třídění VBA - Excel tipy

Excel VBA Makro pro třídění dat. Nelíbí se mi, jak záznam makra vytváří další kód pro třídění. Třídění v aplikaci Excel VBA by mělo být jednoduché. Jeden řádek kódu, se sloupcem seřadit, jakým způsobem (vzestupně nebo sestupně) a je tam záhlaví.

Sledovat video

  • Záznamník maker aplikace Excel nedělá dobrou práci s řazením záznamu.
  • Pokud lze vaše data vybrat pomocí Ctrl + * (označovaného jako Aktuální oblast)
  • Za předpokladu, že nejste seřazení podle barvy nebo ikony nebo více než tří úrovní
  • Použijte starou metodu Range (). CurrentRegion.Sort v aplikaci Excel

Přepis videa

Naučte se Excel z MrExcel Podcast, epizoda 2093: Třídění pomocí VBA

Hej, vítej zpět na netcastu, jsem Bill Jelen. Dnešní otázka od Jamese v Huntsville. Jamesi, použil jsem záznamník maker k záznamu akce třídění dat. Řekněme tedy, že James potřeboval třídit tato data podle sektoru a zákazníků. Přijdete sem na kartu Zobrazení, Makra, Zaznamenat nové makro, SortMyReports, Klávesová zkratka Ctrl - napíšu tam Shift + S a kliknete na OK. Dobře, takže odtud uděláme: Data, Třídit a chceme říct, že chceme Třídit podle sektoru a poté Přidat úroveň a Třídit podle zákazníka a kliknout na OK. Dole v levém dolním rohu klikneme na Zastavit záznam. Dobře, tak tady to je. Zdá se, že fungoval, že?

Ale tady je problém: zítra budete mít více dat nebo méně dat, nebo víte, cokoli. A to Zaznamenané makro je prostě hrozné. Pojďme se podívat, udělám Alt + F8 a podívejme se na SortMyReport, upravím to. Dobře, a to je vše, co nahráli, takže SortFields.Clear, a pak nastavili nové třídění pomocí SortFields.Add a jsou pevně zakódovány a je tu 568 řádků a všechny ty věci.

Teď, když jsem se zařadil zpět do dne, bylo to opravdu, opravdu snadné. Dobře, a pak v aplikaci Excel 2007 přidali řazení podle ikony, řazení podle barvy, řazení podle barvy písma, možnost mít 15 úrovní řazení a všechno se stalo opravdu, opravdu šíleným. Zaznamenané makro tedy již nepoužívám. Jdu prostě do staré školy.

Nyní přejdu zpět na Excel. Tady jsou pravidla, aby toto třídění ze staré školy fungovalo, dobře. Nadpis nad každým sloupcem: tento nadpis musí být na jednom řádku, ne na dvou řádcích. Pokud máte tituly nahoře a je fajn mít tituly nahoře. Mezi vašimi tituly a prvním nadpisem potřebujete úplně prázdný řádek. Pokud máte poznámky na pravé straně: vaše žena volá se seznamem potravin: „Hej, zlato, přestaň cestou domů. Získejte mléko, vejce a vodku. “ Mezi vašimi údaji a tím musí být zcela prázdný sloupec. A pokud jsou dole základní poznámky, ujistěte se, že mezi posledním bitem dat a těmito poznámkami je úplně prázdný řádek.

Celý můj cíl je, že bychom měli být schopni přijít do kterékoli buňky: buňka v levém horním rohu tato data a stiskněte Ctrl + * a vybere data, která mají být tříděna. Nyní stisknu Ctrl +. to nás zavede do tohoto rohu a poté Ctrl +. nás zavede do pravého dolního rohu, Ctrl +. nás zavede do levého dolního rohu. Dobře, takže pokud Ctrl + * správně vybere vaše data, pak je všechno skvělé. Pokud vložíte svůj seznam potravin do Sloupce H a uvidíme, že jsme přišli sem a Ctrl + *, nyní seřadíme seznam potravin jako součást věci a váš seznam potravin bude zkažený. Nebo se vrátíme zpět: pokud tento řádek není tady, uděláme Ctrl + *, uvidíme, že - teď budou bezradní, protože už nemají žádné nadpisy, dobře?

Pokud tedy použijete můj kód, ujistěte se, že všechna tato pravidla jsou pravdivá: žádné třídění mé barvy, žádné třídění mé ikony, 3 nebo méně úrovní třídění. Zpět, dobře. Víme tedy: víme, že každý den naše data začnou v A5. Pokud nevíme, kolik řádků nebo kolik - dobře, kolik sloupců bychom mohli mít. Neumím si představit situaci, kdy jsou sloupce zaměňovány, ale určitě se počet řádků změní. Takže Alt + F11, jednoduše začneme od této buňky v levém horním rohu. Takže Range, v mém případě je „A5“ .CurrentRegion. Aktuální region je tato úžasná vlastnost budovy, která říká, že stiskneme Ctrl + Shift + * a vše, co je tam zahrnuto, je to, co bude tříděno. A my ano. Třídit. . Třídit, dobře.

Tady je věc. Chcete-li provést tříúrovňové třídění, je to snadné: Key1: =. : = a my jen říkáme, že to bude Range - Ach, zapomněl jsem, co to je. Byl to sektor, kde je sektor? Sektor je ve sloupci C. Takže C5 v mém případě Range („C5“) a pak Order1: = xlAscending. Stiskl jsem tam klávesu Šipka dolů a potom Tab. Dobře, teď můžu jít ven doprava, ale nebudu to dělat. Jdu na nový řádek, takže místo, podtržítko na nový řádek, pokračuje v tomto řádku kódu, dobře? A pokud mám řazení na druhé úrovni: Key2: = a v tomto případě chci třídit podle zákazníka, který je ve sloupci D, takže D5. A pak, Order2: xlAscending. Krásná.

Nemám třídění na třetí úrovni, ale pokud ano, bude to Key3 a pak Order3. A pak tento další, ten, který musíte udělat, je Header, dobře? Takže záhlaví: = xlHádej, že tam máš sakra spoustu problémů. A tak tam řekneme xlAno, rozhodně jako Záhlaví. I za starých časů používal záznamník maker xlGuess. Nerad hádám Excel.

A je to. Jeden řádek kódu, to je vše, co musíte udělat, a bude fungovat s více řádky, méně řádky. Je to krásná, krásná věc. Dobře, takže se vrátíme zpět do Excelu. Ctrl + Shift + S je stále to, co je přiřazeno. Nyní - Pokud jste právě přepnuli na VBA a sami to napíšete, můžete přejít na Alt + F8, najít název svého makra, kliknout na Možnosti a zadat Ctrl + Shift + S nebo jej dokonce můžeme přiřadit Klávesová zkratka zde na panelu nástrojů Rychlý přístup. Pravým tlačítkem klikněte na Přizpůsobit panel nástrojů Rychlý přístup, kde jsem si vybral z našich maker. Mám makro s názvem SortMyReport, kliknu na Přidat - nesnáším tam malý vývojový diagram. Upravíme to a já bych byl rád, kdyby tam byla nějaká situace od A do Z, ale samozřejmě to tak není. Možná ten šíp, kdo ví, kdo ví, si prostě vybere cokoli.Magická osmička, nevím. Chystám se vybrat tohoto malého chlapce, kliknout na OK, kliknout na OK. Dobře, takže teď jsou naše data tříděna podle data, zvolím - a nezáleží na tom, co si vyberu. Vždy se to vrátí a roztřídí to od A5, kliknu na malého chlapce a moje data jsou nyní tříděna podle sektoru, v sektoru, podle zákazníka. Funguje to skvěle, dobře?

Takže pokud jste fanouškem záznamníku maker, přeji vám vše nejlepší. Ale kód makro rekordéru v dnešní době pro tříděné třídění ve VBA je mnohem jednodušší; Chcete-li se vrátit, jednoduše použijte v podstatě tento jeden řádek kódu.

Toto je obvykle místo, kde se snažím přimět vás ke koupi této knihy, ale dnes si myslím, že byste se měli na tuto knihu podívat: Excel 2016 VBA a Makra od Tracy a já. Páni! Koukej na tohle. Neuvědomil jsem si, že existuje verze v jiném jazyce. Dostaneme vás úplně nahoru od Macro Learning Curve od nahrávání vašeho prvního makra až po kód, který potřebujete.

Jednoduché shrnutí pro dnešek: Záznam makra aplikace Excel nedělá dobrou práci se záznamem, tříděním: za předpokladu, že vaše data mohou být vybrána pomocí Ctrl + *, který je známý jako aktuální region, za předpokladu, že nebudete třídit jako barvu nebo ikonu nebo více než tři úrovně, použijte k řazení pouze metodu Range (). CurrentRegion.Sort ze staré školy.

Chci poděkovat Jamesovi za zaslání této otázky. Chci vám poděkovat, že jste se zastavili. Uvidíme se příště na dalším netcastu z.

Stáhnout soubor

Stáhněte si ukázkový soubor zde: Podcast2093.xlsm

Zajímavé články...