Kopioi tiedot, joiden päivämäärä on kahden määritetyn päivämäärän välillä, uuteen laskentataulukkoon VBA: n avulla

Anonim

Tässä artikkelissa luomme makron, joka poimii tiedot raakadatataulukosta uuteen laskentataulukkoon määritetyn ajanjakson perusteella.

Raakatiedot koostuvat kolmesta sarakkeesta. Ensimmäinen sarake sisältää päivämäärät, toinen sarake sisältää agenttien nimet ja kolmas sarake sisältää myyntimäärät, jotka agentti teki kyseisenä päivänä.

Ennen makron suorittamista vaaditaan käyttäjältä kaksi tuloa. Käyttäjän on määritettävä aloitus- ja lopetuspäivä. Määritettyjen päivämäärien perusteella makro purkaa määritetyn ajanjakson väliset tiedot uuteen laskentataulukkoon.

Kun aloitus- ja lopetuspäivämäärät on määritetty, käyttäjän on suoritettava makro napsauttamalla Lähetä -painiketta.

Makroa ajettaessa se lajittelee RawData -taulukon tiedot päivämääräsarakkeen perusteella ja poimii tiedot määritetyn ajanjakson perusteella juuri lisätylle laskentataulukolle.

Looginen selitys

Makro ottaa syötteen alkamis- ja lopetuspäivämääriksi soluista J8 ja J9. Tämä makro lajittelee ensin RawData -taulukon tiedot sarakkeen A perusteella nousevassa järjestyksessä. Olemme lajitelleet tiedot päivämääräarvojen mukaan, jotta voimme kopioida tiedot yhdelle alueelle, kun määritetty alue on suodatin.

Kun olet lajitellut tiedot, käytä suodatinta sen päällä. Käytetty suodatin perustuu kahteen ehtoon. Ensimmäinen ehto on, että sarakkeen A arvon on oltava suurempi tai yhtä suuri kuin aloituspäivä ja toinen ehto on, että sarakkeen A arvon on oltava pienempi tai yhtä suuri kuin päättymispäivä.

Suodattimen käytön jälkeen uusi laskentataulukko lisätään ja suodatetut tiedot kopioidaan ja liitetään siihen.

Koodin selitys

Alue ("A1"). CurrentRegion.Sort -avain1: = Alue ("A1"), järjestys1: = xl Kasvava, otsikko: = xlKyllä

Yllä olevaa koodia käytetään tietojen lajitteluun määritetyllä alueella. Avain1 määrittää sarakkeen, jonka perusteella tiedot lajitellaan. Lajittelujärjestys annetaan tilauksen mukaan 1. Olemme jo määritelleet nousevan järjestyksen. Laskevan järjestyksen määrittämiseksi voidaan käyttää xlDescending -vakio. Otsikon avulla määritetään, sisältääkö tietoalue otsikon.

Alue ("A1"). CurrentRegion.AutoFilter Field: = 1, Criteria1: = "> =" & StartDate, Operator: = xlAnd, Criteria2: = "<=" & EndDate

Yllä olevaa koodia käytetään suodattimen käyttämiseen tietoalueella. Kenttä 1 määrittää sarakkeen numeron, johon suodatinta käytetään. Kriteerit 1 ja Kriteerit 2 määrittävät ehdot, joiden perusteella tiedot suodatetaan. Operaattori määrittää operaattorin, jota käytetään kahden ehdon välillä.

Laskentataulukot. Lisää sen jälkeen: = laskentataulukot (laskentataulukot

Yllä olevaa koodia käytetään uuden laskentataulukon lisäämiseen työkirjan viimeisen laskentataulukon jälkeen.

Koodit voidaan helposti ymmärtää, koska olen laittanut kommentteja makron koodien kanssa.

Seuraa koodia alla

 Sub CopyDataBasedOnDate () 'Näytön päivitysten poistaminen käytöstä Application.ScreenUpdating = False' Kahden päivämäärätietomuodon muuttujan ilmoittaminen Dim StartDate, EndDate as Date 'Ilmoitetaan muuttuja laskentataulukko -objektille Dim MainWorksheet As Workheet' Päivämäärän muuttujien alustaminen alkamispäivällä solusta J8 ja päättymispäivä "Makro" -arkin solusta J9 StartDate = Sheets ("Makro"). Alue ("J8"). Arvo EndDate = Sheets ("Makro"). Alue ("J9"). Arvo "Alustetaan laskentataulukko -objektia" RawData "laskentataulukko Aseta MainWorksheet = Worksheets (" RawData ") 'Laskentataulukko -objektin aktivointi MainWorksheet.Activate' Tietojen lajittelu päivämäärän mukaan sarakkeessa A nousevassa järjestyksessä Alue (" A1 "). CurrentRegion.Sort _ key1: = Alue (" A1 "), järjestys1: = xlAscending, _ Otsikko: = xlKyllä 'Suodata tiedot alkamispäivämäärän ja päättymisajanjakson (" A1 ") välisen ajanjakson perusteella. CurrentRegion.AutoFilter Field: = 1, Criteria1: = _"> = " & StartDate, Operator: = xlAnd, Criteria2: = "<=" & EndDate 'Kopioi suodatintiedot ActiveSheet.AutoFilter.Range.Copy' Uuden työn lisääminen ksheet työkirjan viimeisen laskentataulukon jälkeen Työkirjat. Lisää sen jälkeen: = Laskentataulukot (laskentataulukot. Laskenta) 'Kopioitujen tietojen liittäminen ActiveSheet.Paste' Valittujen sarakkeiden koon automaattinen säätö Selection.Columns.AutoFit Range ("A1"). Valitse ' RawData -taulukon aktivointi MainWorksheet.Activate 'Suodattimen poistaminen laskentataulukosta, jota käytimme aiemmin Selection.AutoFilter Sheets ("Makro"). 

Jos pidit tästä blogista, jaa se ystävillesi Facebookissa. Voit myös seurata meitä Twitterissä ja Facebookissa.

Haluaisimme kuulla sinusta, kerro meille, kuinka voimme parantaa työtämme ja parantaa sitä sinulle. Kirjoita meille sähköpostitse