Kopeerige andmed, mille kuupäev on kahe määratletud kuupäeva vahel, uuele töölehele, kasutades VBA -d

Anonim

Selles artiklis loome määratud kuupäevavahemiku põhjal makro, et toormeandmete töölehelt andmed uuele töölehele eraldada.

Toorandmed koosnevad kolmest veerust. Esimene veerg sisaldab kuupäevi, teine ​​veerg sisaldab agentide nimesid ja kolmas veerg sisaldab agendi antud kuupäeval tehtud müügi numbreid.

Enne makro käivitamist on kasutajalt vaja kahte sisendit. Kasutaja peab määrama algus- ja lõppkuupäeva. Määratud kuupäevade põhjal ekstraheerib makro määratud kuupäevavahemiku vahelised andmed uuele töölehele.

Pärast algus- ja lõppkuupäeva määramist peab kasutaja makro käivitamiseks klõpsama nupul „Esita”.

Makro käivitamisel sorteerib see lehel „RawData” olevad andmed kuupäevaveeru alusel ja ekstraheerib andmed määratud kuupäevavahemiku alusel äsja lisatud töölehele.

Loogiline seletus

Makro võtab algus- ja lõppkuupäeva sisendiks vastavalt lahtritest J8 ja J9. See makro sorteerib esmalt lehe „RawData” andmed, tuginedes veerule A kasvavas järjekorras. Oleme sorteerinud andmed kuupäevaväärtuste järgi, et saaksime pärast määratletud vahemiku filtri rakendamist kopeerida andmed ühte vahemikku.

Pärast andmete sorteerimist rakendage sellele filter. Rakendatud filter põhineb kahel tingimusel, esimene tingimus on, et veeru A väärtus peaks olema suurem või võrdne alguskuupäevaga ja teine ​​tingimus on see, et veeru A väärtus peaks olema lõppkuupäevast väiksem või sellega võrdne.

Pärast filtri rakendamist sisestatakse uus tööleht ning filtreeritud andmed kopeeritakse ja kleebitakse sinna.

Koodi selgitus

Vahemik ("A1"). CurrentRegion.Sort võti1: = Vahemik ("A1"), järjekord1: = xlTõusuv, päis: = xlJah

Ülaltoodud koodi kasutatakse andmete sortimiseks määratletud vahemikus. Key1 määrab veeru, mille alusel andmed sorteeritakse. Sortimisjärjekord on esitatud tellimuse järgi1. Oleme juba määratlenud kasvava järjekorra. Kahaneva järjekorra määratlemiseks võib kasutada xlDescending konstandit. Päise abil saate määrata, kas andmevahemik sisaldab päist.

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

Ülaltoodud koodi kasutatakse andmevahemiku filtri rakendamiseks. Väli1 määrab veeru numbri, millele filtrit rakendatakse. Kriteeriumid 1 ja Kriteeriumid 2 määravad tingimused, mille alusel andmeid filtreeritakse. Operaator määrab operaatori, mida kasutatakse kahe tingimuse vahel.

Töölehed. Lisage pärast: = töölehed (töölehed. Arv)

Ülaltoodud koodi kasutatakse uue töölehe lisamiseks pärast töövihiku viimast töölehte.

Koodidest on lihtne aru saada, kuna olen makro juurde lisanud kommentaare koos koodidega.

Palun järgige koodi allpool

 Sub CopyDataBasedOnDate () 'Ekraanivärskenduste keelamine Application.ScreenUpdating = False' Kuupäeva andmetüübi Dim kahe muutuja deklareerimine Dim StartDate, EndDate as Date 'Töölehe objekti muutuja deklareerimine Dim MainWorksheet As Workheet' Kuupäeva muutujate lähtestamine lahtriga J8 lõppkuupäev lehe "Makro" lahtrist J9 StartDate = Sheets ("Macro"). Vahemik ("J8"). Väärtus EndDate = Sheets ("Macro"). Vahemik ("J9"). Väärtus 'Töölehe objekti lähtestamine " RawData "tööleht Set MainWorksheet = Worksheets (" RawData ") 'Töölehe objekti MainWorksheet.Activate' Aktiveerimine 'Andmete sortimine kuupäeva järgi veerus A kasvavas järjekorras Vahemik (" A1 "). CurrentRegion.Sort _ key1: = Vahemik (" A1 "), järjekord1: = xlAscending, _ Header: = xlJah" filtreerige andmed kuupäevavahemiku alusel alguskuupäeva ja lõppkuupäeva vahemiku ("A1") vahel. CurrentRegion.AutoFilter Field: = 1, Criteria1: = _ "> =" & StartDate, Operator: = xlAnd, Criteria2: = "<=" & EndDate 'Kopeeri filtriandmed ActiveSheet.AutoFilter.Range.Copy' Uue töö sisestamine ksheet pärast töövihiku viimast töölehte Töölehed. Lisage pärast: = Töölehed (Töölehed. Arv) 'Kopeeritud andmete kleepimine ActiveSheet.Paste' Valitud veergude suuruse automaatne reguleerimine Selection.Columns.AutoFit Range ("A1"). Valige ' Lehe "RawData" aktiveerimine MainWorksheet.Activate 'Filtri eemaldamine töölehelt, mida rakendasime varem Selection.AutoFilter Sheets ("Makro"). Aktiveerige lõpu alam 

Kui teile see blogi meeldis, jagage seda oma sõpradega Facebookis. Lisaks saate meid jälgida Twitteris ja Facebookis.

Tahaksime sinust kuulda, andke meile teada, kuidas saaksime oma tööd paremaks muuta ja teie jaoks paremaks muuta. Kirjuta meile meilisaidile