VBA sortimine - Exceli näpunäited

Lang L: none (table-of-contents)

Andmete sortimiseks Exceli VBA makro. Mulle ei meeldi, kuidas makrofonija sorteerimiseks lisakoodi loob. Exceli VBA-s sortimine peaks olema lihtne. Üks koodirida koos veeruga sortimiseks, kummal pool (kasvavalt või kahanevalt) ja kas seal on päis.

Vaata videot

  • Exceli makromagnetofon ei tee sorteerimise salvestamisega head tööd.
  • Tingimusel, et teie andmeid saab valida klahvikombinatsiooniga Ctrl + * (tuntud kui praegune piirkond)
  • Tingimusel, et te ei sorteeri värvi või ikooni või rohkem kui kolme taseme järgi
  • Kasutage vana kooli vahemikku (). CurrentRegion.Sordi meetod Excelis

Video ärakiri

Õppige Exceli MrExcel Podcastilt, episood 2093: sortimine VBA-ga

Tere, tere tulemast tagasi netiülekandesse, ma olen Bill Jelen. Tänane küsimus Huntsville'i Jamesilt. James, kasutasin andmete sortimise toimingu salvestamiseks makromagnetofoni. Oletame, et James pidi need andmed sortima sektori ja klientide kaupa. Nii et tulete siit vahekaardile Vaade, Makrod, Uue makro salvestamine, SortMyReports, Kiirklahv Ctrl - sisestan sinna Shift + S ja klõpsan nuppu OK. Hästi, nii et siit me teeme: Andmed, Sorteeri ja tahame öelda, et tahame sortida sektorite kaupa ja seejärel lisada taseme ja sortida kliendi järgi ning klõpsata nuppu OK. Klõpsake vasakus alanurgas allpool nuppu Peata salvestamine. Hästi, nii see on. Tundub töötanud, eks?

Kuid siin on probleem: homme on teil rohkem andmeid või vähem andmeid või teate, mis iganes. Ja see salvestatud makro on lihtsalt kohutav. Vaatame, ma teen Alt + F8 ja vaatan SortMyReport, redigeerin seda. Hästi, ja see on kõik, mida nad SortFieldsi salvestasid. Tühjendage ja seejärel seadistasid nad SortFieldsiga uue sordi. Lisage ja nad on kodeeritud ning seal on 568 rida ja kogu muu kraam.

Nüüd päevaga tagasi sorteerides oli mul tõesti väga lihtne. Olgu, ja siis lisasid nad Excel 2007-s Sort ikooni järgi, Sort värvide järgi, Sordi fondi värvi järgi, võime omada 15 taseme sorti ja kõik muutus lihtsalt väga hulluks. Nii et ma ei kasuta enam salvestatud makrot. Käin lihtsalt vanakoolis.

Nüüd lähen tagasi Excelile. Siin on reeglid, kuidas see vana kooli sortimine toimib. Pealkiri iga veeru kohal: see pealkiri peab olema ühel real, mitte kahel real. Kui teil on seal pealkirjad ja see on hea, kui teil on pealkirjad. Pealkirjade ja esimese pealkirja vahele on vaja täiesti tühja rida. Kui teil on paremal pool märkmeid: teie naine helistab toidukaupade nimekirjaga: „Hei, kallis, peatu koduteel. Hankige piima, mune ja viina. " Teie andmete ja selle vahel peab olema täiesti tühi veerg. Ja kui allservas on katlaplaatide märkmed, siis veenduge, et viimase andmebiti ja nende märkmete vahel oleks täiesti tühi rida.

Minu kogu eesmärk on see, et me peaksime suutma tulla ükskõik millisesse lahtrisse: vasakus ülanurgas olevasse lahtrisse need andmed ja vajutage klahvikombinatsiooni Ctrl + * ja see valib sorteeritavad andmed. Nüüd vajutan klahvikombinatsiooni Ctrl +. mis viib meid sellesse nurka ja siis Ctrl +. viib meid paremasse alanurka, Ctrl +. viib meid vasakusse alumisse nurka. Hästi, nii et kui Ctrl + * valib teie andmed õigesti, on kõik suurepärane. Kui panete oma toidukaupade loendi veergu H ja näeme, et oleme siin üles tulnud ja Ctrl + *, siis nüüd sorteerime asja osana toidukaupade loendi ja teie toidunimekiri rikub. Või võtame tagasi: kui seda rida pole siin, siis nüüd teeme Ctrl + *, näeme, et nüüd oleme nad abimatud, sest neil pole enam pealkirju, eks?

Seega, kui kavatsete kasutada minu koodi, veenduge, et kõik need reeglid vastavad tõele: minu värvi ei sortita, minu ikooni ei sortita, 3 või vähem sorteerimise taset. Võta tagasi, olgu. Nii et me teame järgmist: me teame, et iga päev hakkavad meie andmed algama A5-st. Kui me ei tea, mitu rida või mitu, siis isegi mitu veergu meil võib olla. Ma ei kujuta ette olukorda, kus veerud on omavahel vahetatud, kuid kindlasti muutub ridade arv. Nii et Alt + F11, alustame lihtsalt vasaku ülanurga lahtrist. Nii et Range, minu puhul on "A5". CurrentRegion. Praegune piirkond on see vinge hooneomand, mis ütleb, et vajutame klahvikombinatsiooni Ctrl + Tõstuklahv + * ja kõik, mis seal on, on ka sorteeritav. Ja me teeme .Sorteeri. .Sorteeri, olgu.

Nüüd on siin asi. Kui soovite teha ühetasandilist sorteerimist, on lihtne: Key1: =. : = ja me lihtsalt ütleme, et see saab olema Range - Oh, ma unustan, mis see on. See oli sektor, kus on sektor? Sektor asub veerus C. Nii et minu puhul on C5, vahemik („C5“) ja seejärel, järjekord1: = xlAscending. Vajutasin seal allanooleklahvi ja seejärel Tab. Olgu, ma võiksin jätkata paremale minekut, kuid ma ei kavatse seda teha. Ma lähen uuele reale, nii et tühik, kriips, et minna uuele reale, jätkab seda koodirida, eks? Ja kui mul on teise taseme sort: Key2: = ja sel juhul tahan sortida kliendi järgi, mis on veerus D, nii et D5. Ja siis, Order2: xlAscending. Ilus.

Mul pole kolmanda taseme sortimist, aga kui te seda teeksite, oleks see Key3 ja seejärel Order3. Ja siis see järgmine, mida peate tegema, on Header, eks? Niisiis, Header: = xlGuess, et seal saate palju pahandusi. Ja nii me ütleme seal xlYes, kindlasti Headerina. Isegi vanasti kasutas makromagnet xlGuessi. Ma vihkan, et Excel arvaks.

See selleks. Üks koodirida, see on kõik, mida peate tegema ja see töötab rohkemate ridade, vähemate ridadega. See on ilus, ilus asi. Hästi, nii et tuleme siia Excelisse tagasi. Määratud on endiselt Ctrl + Tõst + S. Nüüd - kui lülitasite lihtsalt VBA-le üle ja tippite selle ise, võite minna Alt + F8-le, leida oma makro nime, klõpsata valikuid Valikud ja sisestada sinna Ctrl + Shift + S või me võime selle isegi määrata Kiirklahv siin kiirpääsuribal. Paremklõpsake käsku Kohanda kiire juurdepääsu tööriistariba, kus valin meie makrod. Mul on makro nimega SortMyReport, klõpsan nuppu Lisa - ma vihkan seal väikest vooskeemi. Me muudame seda ja mulle meeldiks, kui seal oleks mingisugune olukord A-st Z-ni, kuid muidugi pole. Võib-olla see nool, kes teab, kes teab, valib lihtsalt ükskõik mida.Maagiline 8-pall, ma ei tea. Valin siin selle väikse kuti, klõpsake nuppu OK, klõpsake nuppu OK. Hästi, nii et nüüd on meie andmed sorteeritud kuupäeva järgi, ma valin - ja pole tähtis, mida ma valin. Alati läheb see tagasi ja sorteeritakse see A5-st, klõpsan väikest poissi ja minu andmed on nüüd sorteeritud sektori järgi, sektori sees, kliendi järgi. See töötab suurepäraselt, hästi?

Nii et kui olete makromagnetofänni fänn, siis minu südamlikud parimad soovid teile. Kuid tänapäeval on VBA-s sortimis- ja sorteerimiskood Macro Recorder lihtsalt nii palju lihtsam; lihtsalt tagasi liikumiseks kasutage lihtsalt sisuliselt seda ühte koodirida.

Noh, see on tavaliselt koht, kus proovin teid selle raamatu ostma panna, kuid täna arvan, et peaksite selle raamatu üle vaatama: Tracy ja minu enda Excel 2016 VBA ja makrod. Vau! Vaata seda. Ma ei saanud aru, et on olemas mõnes teises keeles versioon. Anname teile makrokõvera täielikult üles, alates teie esimese makro salvestamisest vajaliku koodini.

Noh, lihtne tänase päeva kokkuvõte: Exceli makrosalvesti ei tee salvestamise ja sortimisega head tööd: kui teie andmeid saab valida praeguse piirkonnana tuntud klahvikombinatsiooniga Ctrl + *, tingimusel et te ei sorteeri nagu värvi või ikooni või rohkem kui kolmel tasemel, kasutage lihtsalt vana kooli vahemikku (). CurrentRegion.Sortimismeetod VBA-s.

Ma tahan tänada Jamesit selle küsimuse saatmise eest. Ma tahan tänada teid peatumast. Järgmisel korral näeme järgmise võrguülekande jaoks.

Laadige fail alla

Laadige näidisfail alla siit: Podcast2093.xlsm

Huvitavad Artiklid...