I denne artikel vil vi oprette en makro til at udtrække data fra rådata -regneark til et nyt regneark baseret på det angivne datointerval.
Rådata består af tre kolonner. Første kolonne indeholder datoer, anden kolonne indeholder agentnavne og tredje kolonne indeholder antal salg foretaget af en agent på den pågældende dato.
Inden makroen køres, kræves to input fra en bruger. Brugeren skal definere start- og slutdato. Baseret på de angivne datoer udtrækker makroen dataene mellem det definerede datointerval til et nyt regneark.
Efter angivelse af start- og slutdatoer skal brugeren klikke på knappen "Send" for at udføre makroen.
Når makroen køres, vil den sortere data i "RawData" -arket baseret på datokolonne og udtrække data baseret på det angivne datointerval til det nyligt indsatte regneark.
Logisk forklaring
Makro tager input til henholdsvis start- og slutdatoer fra cellerne J8 og J9. Denne makro sorterer først dataene i "RawData" -ark, baseret på kolonne A i stigende rækkefølge. Vi har sorteret dataene efter datoværdier, så vi kan kopiere dataene i et enkelt område efter anvendelse af filter for det definerede område.
Efter sortering af data, anvende filteret over det. Det anvendte filter er baseret på to betingelser, den første betingelse er, at værdien i kolonne A skal være større end eller lig med startdatoen, og den anden betingelse er, at værdien i kolonne A skal være mindre end eller lig med slutdatoen.
Efter anvendelse af filteret indsættes det nye regneark, og filtrerede data kopieres og indsættes i det.
Kode forklaring
Range ("A1"). CurrentRegion.Sort key1: = Range ("A1"), ordre1: = xlAscending, Header: = xlJa
Ovenstående kode bruges til at sortere data i det definerede område. Nøgle1 angiver kolonnen baseret på, hvilke data der skal sorteres. Sorteringsrækkefølge leveres ved ordre1. Vi har allerede defineret den stigende rækkefølge. For at definere faldende rækkefølge kan man bruge xlDescending konstant. Overskrift bruges til at angive, om dataområdet indeholder overskriften.
Område ("A1"). CurrentRegion.AutoFilter Field: = 1, Criteria1: = "> =" & StartDate, Operator: = xlAnd, Criteria2: = "<=" & EndDate
Ovenstående kode bruges til at anvende filter over dataområdet. Felt1 angiver det kolonnenummer, som filteret skal anvendes på. Kriterier1 og Kriterier2 definerer betingelserne baseret på, hvilke data der filtreres. Operatør angiver operatøren, som skal bruges mellem to betingelser.
Arbejdsark.Tilføj efter: = Regneark (Arbejdsark.Tælling)
Ovenstående kode bruges til at indsætte det nye regneark efter det sidste regneark i projektmappen.
Man kan let forstå koderne, da jeg har lagt kommentarer sammen med koderne i makroen.
Følg venligst nedenstående for koden
Sub CopyDataBasedOnDate () 'Deaktivering af skærmopdateringer Application.ScreenUpdating = False' Deklarere to variabler af Datodatatype Dim StartDate, EndDate As Date 'Deklarationsvariabel for regnearksobjekt Dim MainWorksheet As Worksheet' Initialisering af datovariabler med startdato fra celle J8 'og slutdato fra celle J9 i "Makro" -ark StartDate = Sheets ("Makro"). Område ("J8"). Værdi EndDate = Sheets ("Makro"). Område ("J9"). Værdi 'Initialiserer regnearksobjekt med " RawData "regneark Set MainWorksheet = Regneark (" RawData ") 'Aktivering af regnearksobjektet MainWorksheet.Activate' Sortering af data efter dato i kolonne A i stigende rækkefølge (" A1 "). CurrentRegion.Sort _ key1: = Range (" A1 "), ordre1: = xlAscending, _ Header: = xlJa 'Filtrer dataene baseret på datointerval mellem startdato og slutdatointerval (" A1 "). CurrentRegion.AutoFilter Field: = 1, Criteria1: = _"> = " & StartDate, Operator: = xlAnd, Criteria2: = "<=" & EndDate 'Copy the filter data ActiveSheet.AutoFilter.Range.Copy' Inserting new wor ksheet efter det sidste regneark i projektmappen Worksheets.Add after: = Worksheets (Worksheets.Count) 'Indsætter de kopierede data ActiveSheet.Paste' Automatisk justering af størrelsen på de valgte kolonner Selection.Columns.AutoFit Range ("A1"). Vælg ' Aktivering af "RawData" -arket MainWorksheet.Activate 'Fjernelse af filter fra det regneark, som vi anvendte tidligere Selection.AutoFilter Sheets ("Makro"). Aktiver End Sub
Hvis du kunne lide denne blog, kan du dele den med dine venner på Facebook. Du kan også følge os på Twitter og Facebook.
Vi vil meget gerne høre fra dig, lad os vide, hvordan vi kan forbedre vores arbejde og gøre det bedre for dig. Skriv til os på e -mail -stedet