Kopier data med dato mellom to definerte datoer til nytt regneark ved hjelp av VBA

Anonim

I denne artikkelen vil vi lage en makro for å trekke ut data fra rådata -regnearket til et nytt regneark, basert på det angitte datoområdet.

Rådata består av tre kolonner. Første kolonne inneholder datoer, andre kolonne inneholder agentnavn og tredje kolonne inneholder antall salg som ble gjort av en agent på den aktuelle datoen.

Før du kjører makroen, kreves to innganger fra en bruker. Brukeren må definere start- og sluttdato. Basert på de angitte datoene, vil makroen trekke ut dataene mellom det definerte datoområdet til et nytt regneark.

Etter å ha spesifisert start- og sluttdatoer, må brukeren klikke på "Send" -knappen for å utføre makroen.

Når du kjører makroen, vil den sortere data i "RawData" -arket, basert på datokolonne og trekke ut data basert på det angitte datoområdet til det nylig innsatte regnearket.

Logisk forklaring

Makro tar input for henholdsvis start- og sluttdatoer fra cellene J8 og J9. Denne makroen sorterer først dataene i "RawData" -arket, basert på kolonne A i stigende rekkefølge. Vi har sortert dataene etter datoverdier, slik at vi kan kopiere dataene i et enkelt område, etter å ha brukt filter for det definerte området.

Etter å ha sortert dataene, bruk filteret over det. Filteret som brukes er basert på to betingelser, den første betingelsen er at verdien i kolonne A skal være større enn eller lik startdatoen, og den andre betingelsen er at verdien i kolonne A skal være mindre enn eller lik sluttdato.

Etter bruk av filteret settes det nye regnearket inn og filtrerte data kopieres og limes inn i det.

Kode forklaring

Range ("A1"). CurrentRegion.Sort key1: = Range ("A1"), order1: = xlAscending, Header: = xlJa

Koden ovenfor brukes til å sortere data i det definerte området. Nøkkel1 spesifiserer kolonnen basert på hvilke data som skal sorteres. Sorteringsrekkefølge er gitt ved bestilling1. Vi har allerede definert den stigende rekkefølgen. For å definere synkende rekkefølge kan man bruke xlDescending konstant. Overskrift brukes til å angi om dataområdet inneholder overskriften.

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

Koden ovenfor brukes til å bruke filter over dataområdet. Felt1 angir kolonnummeret som filteret skal brukes på. Kriterier1 og Kriterier2 definerer betingelsene basert på hvilke data som skal filtreres. Operatør spesifiserer operatøren, som skal brukes mellom to forhold.

Regneark. Legg til etter: = Regneark (Regneark. Antall)

Koden ovenfor brukes til å sette inn det nye regnearket etter det siste regnearket i arbeidsboken.

Man kan lett forstå kodene, ettersom jeg har lagt kommentarer sammen med kodene i makroen.

Følg koden nedenfor

 Sub CopyDataBasedOnDate () 'Deaktivering av skjermoppdateringer Application.ScreenUpdating = False' Deklarerer to variabler av Datatypetype Dim StartDate, EndDate As Date 'Deklarasjonsvariabel for regnearkobjekt Dim MainWorksheet As Worksheet' Initialiserer datovariabler med startdato fra celle J8 'og sluttdato fra celle J9 i "Makro" -ark StartDate = Sheets ("Makro"). Område ("J8"). Verdi EndDate = Sheets ("Makro"). Område ("J9"). Verdi 'Initialiserer regnearkobjekt med " RawData "regneark Sett MainWorksheet = Regneark (" RawData ") 'Aktiverer regnearkobjektet MainWorksheet.Activate' Sortering av data etter dato i kolonne A i stigende rekkefølge (" A1 "). CurrentRegion.Sort _ key1: = Range (" A1 "), ordre1: = xlAscending, _ Header: = xlJa 'Filtrer dataene basert på datointervall mellom startdato og sluttdatoområde (" A1 "). CurrentRegion.AutoFilter Field: = 1, Criteria1: = _"> = " & StartDate, Operator: = xlAnd, Criteria2: = "<=" & EndDate 'Kopier filterdata ActiveSheet.AutoFilter.Range.Copy' Setter inn ny wor ksheet etter det siste regnearket i arbeidsboken Worksheets.Add after: = Worksheets (Worksheets.Count) 'Lim inn de kopierte dataene ActiveSheet.Paste' Automatisk justering av størrelsen på valgte kolonner Selection.Columns.AutoFit Range ("A1"). Velg ' Aktivering av "RawData" -arket MainWorksheet.Activate 'Fjerne filter fra regnearket som vi brukte tidligere Selection.AutoFilter Sheets ("Makro"). Aktiver End Sub 

Hvis du likte denne bloggen, del den med vennene dine på Facebook. Du kan også følge oss på Twitter og Facebook.

Vi vil gjerne høre fra deg, gi oss beskjed om hvordan vi kan forbedre arbeidet vårt og gjøre det bedre for deg. Skriv til oss på e -post