V tem članku bomo na podlagi podanega časovnega obdobja ustvarili makro za ekstrakcijo podatkov iz delovnega lista surovih podatkov v nov delovni list.
Neobdelani podatki so sestavljeni iz treh stolpcev. Prvi stolpec vsebuje datume, drugi stolpec vsebuje imena zastopnikov in tretji stolpec vsebuje število prodaj, ki jih je agent izvedel na določen datum.
Pred zagonom makra sta od uporabnika potrebna dva vnosa. Uporabnik mora določiti začetni in končni datum. Na podlagi določenih datumov bo makro izvlekel podatke med opredeljenim časovnim obdobjem na nov delovni list.
Po določitvi začetnega in končnega datuma mora uporabnik klikniti gumb »Pošlji«, da izvede makro.
Ob zagonu makra bo podatke razvrstil na listu »RawData« na podlagi stolpca z datumom in izvlekel podatke na podlagi podanega časovnega obdobja na novo vstavljen delovni list.
Logična razlaga
Makro vnese začetni in končni datum iz celic J8 oziroma J9. Ta makro najprej razvrsti podatke na listu »RawData« na podlagi stolpca A v naraščajočem vrstnem redu. Podatke smo razvrstili glede na datumske vrednosti, tako da jih lahko po uporabi filtra za definirano območje kopiramo v en sam obseg.
Po razvrščanju podatkov uporabite filter nad njim. Uporabljeni filter temelji na dveh pogojih, prvi pogoj je, da mora biti vrednost v stolpcu A večja ali enaka začetnemu datumu, drugi pogoj pa je, da mora biti vrednost v stolpcu A manjša ali enaka končnemu datumu.
Po uporabi filtra se vstavi nov delovni list, filtrirani podatki pa se kopirajo in prilepijo vanj.
Razlaga kode
Obseg ("A1"). CurrentRegion.Sort key1: = Range ("A1"), order1: = xlAscending, Header: = xlDa
Zgornja koda se uporablja za razvrščanje podatkov v opredeljenem obsegu. Key1 določa stolpec, na podlagi katerega bodo razvrščeni podatki. Naročilo za razvrščanje je zagotovljeno z ukazom1. Naraščajoči vrstni red smo že opredelili. Za določitev padajočega vrstnega reda lahko uporabimo konstanto xlDescending. Glava se uporablja za določitev, ali obseg podatkov vsebuje glavo.
Range ("A1"). CurrentRegion.AutoFilter Field: = 1, Criteria1: = "> =" & StartDate, Operator: = xlAnd, Criteria2: = "<=" & EndDate
Zgornja koda se uporablja za uporabo filtra za obseg podatkov. Polje 1 določa številko stolpca, na katerem bo uporabljen filter. Merila1 in Merila2 opredeljujeta pogoje, na podlagi katerih bodo podatki filtrirani. Operater določi operaterja, ki bo uporabljen med dvema pogojema.
Delovni listi. Dodaj po: = Delovni listi (Delovni listi. Število)
Zgornja koda se uporablja za vstavljanje novega delovnega lista po zadnjem delovnem listu v delovni zvezek.
Kode lahko zlahka razumemo, saj sem v makro postavil komentarje skupaj s kodami.
Za kodo sledite spodaj
Sub CopyDataBasedOnDate () "Onemogočanje posodobitev zaslona Application.ScreenUpdating = False" Deklariranje dveh spremenljivk podatkovnega tipa Date Dim StartDate, EndDate As Date "Razglasitev spremenljivke za objekt delovnega lista Zatemni glavni delovni list kot delovni list" Inicializiranje spremenljivk datuma z začetnim datumom iz celice J8 "in končni datum iz celice J9 lista "Makro" StartDate = Sheets ("Macro"). Range ("J8"). EndDate Value = Sheets ("Macro"). Range ("J9"). Value "Inicializiranje predmeta delovnega lista z" RawData "delovni list Set MainWorksheet = Worksheets (" RawData ") 'Aktiviranje predmeta delovnega lista MainWorksheet.Activate' Razvrščanje podatkov po datumu v stolpcu A v naraščajočem obsegu (" A1 "). CurrentRegion.Sort _ key1: = Range (" A1 "), order1: = xlAscending, _ Header: = xlDa" Filtrirajte podatke glede na časovno obdobje med začetnim datumom in končnim datumskim obsegom ("A1"). CurrentRegion.AutoFilter Field: = 1, Criteria1: = _ "> =" & StartDate, Operator: = xlAnd, Criteria2: = "<=" & EndDate 'Kopirajte podatke filtra ActiveSheet.AutoFilter.Range.Copy' Vstavljanje novega dela ksheet po zadnjem delovnem listu v delovnem zvezku Worksheets.Add after: = Worksheets (Worksheets.Count) 'Lepljenje kopiranih podatkov ActiveSheet.Paste' Samodejno prilagajanje velikosti izbranih stolpcev Selection.Columns.AutoFit Range ("A1"). Select ' Aktiviranje lista "RawData" MainWorksheet.Activate 'Odstranitev filtra z delovnega lista, ki smo ga uporabili v prejšnjem izboru.AutoFilter Sheets ("Macro"). Activate End Sub
Če vam je bil ta blog všeč, ga delite s prijatelji na Facebooku. Prav tako nam lahko sledite na Twitterju in Facebooku.
Radi bi slišali od vas, nam sporočite, kako lahko izboljšamo svoje delo in ga izboljšamo za vas. Pišite nam na spletnem mestu e -pošte