I den här artikeln kommer vi att skapa ett makro för att extrahera data från rådata -kalkylblad till ett nytt kalkylblad, baserat på det angivna datumintervallet.
Rådata består av tre kolumner. Den första kolumnen innehåller datum, den andra kolumnen innehåller agentnamn och den tredje kolumnen innehåller antalet försäljningar som en agent gjorde det aktuella datumet.
Innan du kör makrot krävs två ingångar från en användare. Användaren måste definiera start- och slutdatum. Baserat på de angivna datumen kommer makrot att extrahera data mellan det definierade datumintervallet till ett nytt kalkylblad.
Efter att ha angett start- och slutdatum måste användaren klicka på knappen "Skicka" för att köra makrot.
När du kör makrot kommer det att sortera data i "RawData" -arket, baserat på datumkolumn och extrahera data baserat på det angivna datumintervallet till det nyligen infogade kalkylbladet.
Logisk förklaring
Makro tar in input för start- och slutdatum från cellerna J8 respektive J9. Detta makro sorterar först data i "RawData" -arket, baserat på kolumn A i stigande ordning. Vi har sorterat data enligt datumvärden, så att vi kan kopiera data i ett enda intervall, efter att ha använt filter för det definierade intervallet.
Efter att ha sorterat data, applicera filtret över det. Filter som tillämpas är baserat på två villkor, första villkoret är att värdet i kolumn A ska vara större än eller lika med startdatum och andra villkor är att värdet i kolumn A ska vara mindre än eller lika med slutdatum.
Efter applicering av filtret infogas det nya kalkylbladet och filtrerade data kopieras och klistras in i det.
Kodförklaring
Range ("A1"). CurrentRegion.Sort key1: = Range ("A1"), order1: = xlAscending, Header: = xlJa
Ovanstående kod används för att sortera data i det definierade intervallet. Nyckel1 anger kolumnen baserad på vilken data som ska sorteras. Sorteringsordning tillhandahålls genom order1. Vi har redan definierat den stigande ordningen. För att definiera fallande ordning kan man använda xlDescending konstant. Rubrik används för att ange om dataintervallet innehåller rubriken.
Range ("A1"). CurrentRegion.AutoFilter Field: = 1, Criteria1: = "> =" & StartDate, Operator: = xlAnd, Criteria2: = "<=" & EndDate
Ovanstående kod används för att tillämpa filter över dataområdet. Fält1 anger det kolumnnummer som filtret ska användas på. Kriterier1 och Kriterier2 definierar villkoren utifrån vilka data filtreras. Operatören anger operatören, som ska användas mellan två villkor.
Arbetsblad.Lägg till efter: = Arbetsblad (Worksheets.Count)
Ovanstående kod används för att infoga det nya kalkylbladet efter det sista kalkylbladet i arbetsboken.
Man kan enkelt förstå koderna, eftersom jag har lagt kommentarer tillsammans med koderna i makrot.
Följ koden nedan
Sub CopyDataBasedOnDate () 'Inaktivera skärmuppdateringar Application.ScreenUpdating = False' Deklarerar två variabler av datumdatatyp Dim StartDate, EndDate As Date 'Deklarationsvariabel för kalkylbladobjekt Dim MainWorksheet As Worksheet' Initierar datumvariabler med startdatum från cell J8 'och slutdatum från cell J9 i "Makro" -ark StartDate = Sheets ("Makro"). Område ("J8"). Värde EndDate = Sheets ("Makro"). Område ("J9"). Värde 'Initierar kalkylbladobjekt med " RawData "kalkylblad Ange MainWorksheet = Arbetsblad (" RawData ") 'Aktivera kalkylbladobjektet MainWorksheet.Activate' Sortera data efter datum i kolumn A i stigande ordningsintervall (" A1 "). CurrentRegion.Sort _ key1: = Range (" A1 "), order1: = xlAscending, _ Header: = xlJa 'Filtrera data baserat på datumintervall mellan startdatum och slutdatum Intervall (" 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 sista kalkylbladet i arbetsboken Worksheets.Add after: = Worksheets (Worksheets.Count) 'Klistrar in de kopierade data ActiveSheet.Paste' Justerar automatiskt storleken på markerade kolumner Selection.Columns.AutoFit Range ("A1"). Välj ' Aktivera "RawData" -bladet MainWorksheet.Activate 'Ta bort filtret från kalkylbladet som vi använde tidigare Selection.AutoFilter Sheets ("Makro"). Aktivera End Sub
Om du gillade den här bloggen, dela den med dina vänner på Facebook. Du kan också följa oss på Twitter och Facebook.
Vi vill gärna höra från dig, låt oss veta hur vi kan förbättra vårt arbete och göra det bättre för dig. Skriv till oss på e -postwebbplatsen