VBA-lajittelu - Excel-vinkit

Sisällysluettelo

Excel VBA -makro tietojen lajittelemiseksi. En pidä siitä, kuinka makrotallennin luo ylimääräistä koodia lajittelua varten. Lajittelun Excel VBA: ssa on oltava yksinkertaista. Yksi koodirivi, sarakkeen kanssa lajiteltava, mihin suuntaan (nouseva tai laskeva), ja onko otsikko.

Katso video

  • Excel-makrotallennin ei tee hyvää työtä lajittelun tallentamisessa.
  • Jos tietosi voidaan valita painamalla Ctrl + * (tunnetaan nykyisenä alueena)
  • Edellyttäen, että et lajittele väriä tai kuvaketta tai enemmän kuin kolmea tasoa
  • Käytä vanhan koulun aluetta (). CurrentRegion.Sort-menetelmä Excelissä

Videon transkriptio

Opi Excel MrExcel Podcastista, jaksosta 2093: Lajittelu VBA: n avulla

Hei, tervetuloa takaisin netcastiin, olen Bill Jelen. Tämän päivän kysymys Jamesilta Huntsvillessä. James, käytin makrotallenninta tietojen lajittelun tallentamiseen. Joten sanotaan, että Jamesin oli lajiteltava nämä tiedot sektorin ja asiakkaiden mukaan. Joten tulet tänne Näytä-välilehteen, Makrot, Tallenna uusi makro, SortMyReports, Pikavalintanäppäin Ctrl - kirjoitan Shift + S sinne ja napsautan OK. Selvä, joten sitten täältä: Data, Lajittelu ja haluamme sanoa, että haluamme Lajittele sektorin mukaan ja sitten Lisää taso ja Lajittele asiakkaan mukaan ja napsauta OK. Napsautamme vasemmassa alakulmassa alas Lopeta tallennus. Selvä, niin siinä se on. Näyttää toimivan, eikö?

Mutta tässä on ongelma: huomenna sinulla on enemmän tietoja tai vähemmän tietoja tai tiedät mitä tahansa. Ja tuo nauhoitettu makro on vain kamala. Katsotaanpa, minä teen Alt + F8 ja katson SortMyReport, muokkaa sitä. Selvä, ja tämä on kaikki, mitä he nauhoittivat, joten SortFields.Clear, ja sitten he perustivat uudenlaisen SortFields.Add-palvelun kanssa, ja ne ovat kovakoodattuja, ja siellä on 568 riviä ja kaikki muut.

Kun lajittelin takaisin päivään, olin todella, todella helppoa. Selvä, ja sitten Excel 2007: ssä he lisäsivät Lajittele kuvakkeen mukaan, Lajittele värin mukaan, Lajittele fontin värin mukaan, kyvyn olla 15 tasolajittelua ja kaikki muuttui todella, todella hulluksi. Joten, en käytä tallennettua makroa enää. Käyn vain vanhassa koulussa.

Aion siirtyä takaisin Exceliin. Tässä ovat säännöt tämän vanhan koulun lajittelun toimimiseksi. Otsikko jokaisen sarakkeen yläpuolella: kyseisen otsikon on oltava yhdellä rivillä, ei kahdella rivillä. Jos sinulla on nimikkeitä siellä ja on hienoa, että sinulla on otsikoita siellä. Tarvitset täysin tyhjän rivin otsikoidesi ja ensimmäisen otsikon väliin. Jos sinulla on muistiinpanoja oikealla puolella: vaimosi soittaa päivittäistavaraluettelolla: "Hei kulta, pysähdy matkalla kotiin. Hanki maitoa, munia ja vodkaa. " Tietojesi ja sen välillä on oltava täysin tyhjä sarake. Ja jos alareunassa on kattilamerkintöjä, varmista, että viimeisen datan ja näiden muistiinpanojen välillä on täysin tyhjä rivi.

Tavoitteenani on, että meidän pitäisi pystyä tulemaan mihin tahansa yhteen soluun: vasemman yläkulman soluun nämä tiedot ja painamalla Ctrl + * ja se valitsee lajiteltavat tiedot. Painan nyt Ctrl +. joka vie meidät tähän kulmaan ja sitten Ctrl +. vie meidät oikeaan alakulmaan, Ctrl +. vie meidät vasempaan alakulmaan. Selvä, joten jos Ctrl + * valitsee tietosi oikein, kaikki on hienoa. Jos laitat päivittäistavaraluettelosi sarakkeeseen H ja näemme, että tulemme tänne ja Ctrl + *, no, nyt lajittelemme päivittäistavaraluettelon osana asiaa ja päivittäistavaraluettelosi sekoitetaan. Tai kumotaan: jos tätä riviä ei ole täällä, nyt teemme Ctrl + *, katso, olemme nyt - he ovat tietämättömiä, koska heillä ei ole enää otsikoita, okei?

Joten, jos aiot käyttää koodiani, varmista, että kaikki nämä säännöt ovat totta: ei lajitella väriäni, ei lajitella kuvakettaani, 3 tai vähemmän lajittelutasoja. Kumoa, okei. Joten tämä on mitä tiedämme: tiedämme, että joka päivä tietomme alkavat A5: stä. Jos emme tiedä kuinka monta riviä tai kuinka monta, jopa kuinka monta saraketta meillä voi olla. En voi kuvitella tilannetta, jossa sarakkeet vaihdetaan, mutta rivien lukumäärä varmasti muuttuu. Joten Alt + F11, aloitamme yksinkertaisesti siitä vasemman yläkulman solusta. Joten Range, minun tapauksessani on “A5” .CurrentRegion. Nykyinen alue on tämä mahtava rakennusominaisuus, joka sanoo, että painamme Ctrl + Vaihto + *, ja kaikki, mitä siellä on, lajitellaan. Ja me teemme. Lajittele, okei.

Tässä on asia. Jos haluat tehdä yhden tason lajittelun, on helppoa: Key1: =. : = ja me vain sanomme, että se tulee olemaan Range - Voi unohdan mitä se on. Se oli Sector, missä Sector on? Sektori on sarakkeessa C. Joten C5 minun tapauksessani, Range ("C5") ja sitten, Order1: = xlAscending. Painin alanuolinäppäintä ja sitten sarkainta. Okei, voisin jatkaa ulos oikealle, mutta en aio tehdä sitä. Aion mennä uudelle riville, joten välilyönti, alaviiva siirtyäksesi uudelle riville, jatkaa tätä koodiriviä, okei? Ja jos minulla on toisen tason lajittelu: Key2: = ja tässä tapauksessa haluan lajitella asiakkaan mukaan, joka on sarakkeessa D, joten D5. Ja sitten, Order2: xlAscending. Kaunis.

Minulla ei ole kolmannen tason lajittelua, mutta jos tekisit, se olisi Key3 ja sitten Order3. Ja sitten tämä seuraava, sinun täytyy tehdä on Header, okei? Joten, Header: = xlGuess, siellä saat helvetti paljon ongelmia. Ja niin sanomme siellä xlYes, ehdottomasti otsikkona. Jopa vanhoina aikoina makrotallennin käyttäisi xlGuessia. Inhoan Excelin arvata.

Se siitä. Yksi koodirivi, kaikki mitä sinun tarvitsee tehdä, ja se toimii enemmän rivejä, vähemmän rivejä. Se on kaunis, kaunis asia. Selvä, joten palaamme tänne Exceliin. Ctrl + Vaihto + S on edelleen määritetty asia. Se nyt - Jos olet juuri vaihtanut VBA: han ja kirjoitat sen itse, voit siirtyä Alt + F8, etsiä makrosi nimen, napsauttaa Asetukset ja kirjoittaa siihen Ctrl + Vaihto + S tai voimme jopa määrittää sen Pikavalintanäppäin täällä Quick Access -työkalurivillä. Napsauta hiiren kakkospainikkeella, Muokkaa pikakäynnistystyökaluriviä, josta valitsen makrostamme. Minulla on makro nimeltä SortMyReport, napsautan Lisää - vihaan siellä olevaa pientä vuokaaviota. Me muokkaamme sitä ja haluaisin, että siellä olisi jonkinlainen A-Z-tilanne, mutta tietysti ei ole. Ehkä se nuoli, joka tietää, kuka tietää, valitse vain mitä tahansa.Maaginen 8-pallo, en tiedä. Aion valita tämän pienen kaverin täältä, napsauta OK, napsauta OK. Selvä, joten nyt tietomme on lajiteltu päivämäärän mukaan, minä valitsen - eikä sillä ole väliä mitä valitsen. Se palaa aina takaisin ja lajittelee sen A5: stä, napsautan pikku kaveria ja tietoni on nyt lajiteltu sektorin, sektorin, asiakkaan mukaan. Se toimii hyvin, okei?

Joten jos olet Macro Recorder -fani, niin sydämelliset onnittelut sinulle. Mutta nykyään makrotallenninkoodi lajittelua varten - lajittelu VBA: ssa on vain niin paljon yksinkertaisempaa; vain palataksesi takaisin, käytä yksinkertaisesti tätä yhtä koodiriviä.

No, tämä on yleensä paikka, jossa yritän saada sinut ostamaan tämän kirjan, mutta tänään mielestäni sinun pitäisi katsoa tätä kirjaa: Excel 2016 VBA ja Makrot, Tracy ja minä. Vau! Tsekkaa tämä. En tajunnut, että versiota on toisella kielellä. Saamme sinut täysin ylös Makrokäyrä ensimmäisen makrosi tallentamisesta tarvittavaan koodiin.

No, yksinkertainen yhteenveto tänään: Excel-makrotallennin ei tee hyvää työtä nauhoituksessa, lajittelussa: edellyttäen, että tietosi voidaan valita käyttämällä Ctrl + *, joka tunnetaan nykyisenä alueena, jos et lajittele kuten väriä tai kuvaketta tai useammalla kuin kolmella tasolla, käytä vain vanhan koulun aluetta (). CurrentRegion.Sort-menetelmä VBA: ssa lajittelua varten.

Haluan kiittää Jamesia tämän kysymyksen lähettämisestä. Haluan kiittää sinua siitä, että kävit ohi. Nähdään ensi kerralla toisesta netcastista.

Lataa tiedosto

Lataa esimerkkitiedosto täältä: Podcast2093.xlsm

Mielenkiintoisia artikkeleita...