Nukopijuokite duomenis, kurių data yra tarp dviejų apibrėžtų datų, į naują darbalapį naudodami VBA

Anonim

Šiame straipsnyje mes sukursime makrokomandą, skirtą duomenims iš neapdorotų duomenų darbalapio išgauti į naują darbalapį, atsižvelgiant į nurodytą dienų seką.

Neapdorotus duomenis sudaro trys stulpeliai. Pirmajame stulpelyje yra datos, antrame stulpelyje yra agentų pavadinimai, o trečiame stulpelyje nurodomi agento pardavimai tą dieną.

Prieš paleidžiant makrokomandą, iš vartotojo reikia dviejų įėjimų. Vartotojas turi nustatyti pradžios ir pabaigos datą. Remiantis nurodytomis datomis, makrokomanda iš naujo išskleis nustatytos dienų sekos duomenis į naują darbalapį.

Nurodęs pradžios ir pabaigos datas, vartotojas turi spustelėti mygtuką „Pateikti“, kad įvykdytų makrokomandą.

Vykdydamas makrokomandą, jis surūšiuos duomenis „RawData“ lape pagal datos stulpelį ir išgauna duomenis pagal nurodytą dienų seką į naujai įterptą darbalapį.

Loginis paaiškinimas

Makrokomandos pradžios ir pabaigos datas įveda atitinkamai iš J8 ir J9 langelių. Ši makrokomanda pirmiausia surūšiuoja duomenis „RawData“ lape, remdamasi A stulpeliu didėjančia tvarka. Mes surūšiavome duomenis pagal datos reikšmes, kad galėtume nukopijuoti duomenis į vieną diapazoną, pritaikę apibrėžto diapazono filtrą.

Surūšiavę duomenis, uždėkite ant jų filtrą. Taikomas filtras grindžiamas dviem sąlygomis: pirmoji sąlyga yra tai, kad A stulpelio vertė turi būti didesnė arba lygi pradžios datai, o antroji sąlyga - kad A stulpelio vertė turėtų būti mažesnė arba lygi pabaigos datai.

Pritaikius filtrą, naujas darbalapis įterpiamas, o nukopijuoti ir įklijuoti filtruoti duomenys.

Kodo paaiškinimas

Diapazonas ("A1"). CurrentRegion.Sort raktas1: = Diapazonas ("A1"), tvarka1: = xlAugantis, antraštė: = xlTaip

Aukščiau pateiktas kodas naudojamas duomenims rūšiuoti apibrėžtame diapazone. „Key1“ nurodo stulpelį, pagal kurį bus rūšiuojami duomenys. Rūšiavimo tvarka pateikiama pagal užsakymą1. Mes jau apibrėžėme didėjančią tvarką. Mažėjančiai tvarkai apibrėžti galima naudoti xlDescending konstantą. Antraštė naudojama norint nurodyti, ar duomenų diapazone yra antraštė.

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

Aukščiau pateiktas kodas naudojamas filtrui taikyti duomenų diapazone. 1 laukelyje nurodomas stulpelio numeris, kuriam bus taikomas filtras. 1 ir 2 kriterijai apibrėžia sąlygas, kuriomis remiantis duomenys bus filtruojami. Operatorius nurodo operatorių, kuris bus naudojamas tarp dviejų sąlygų.

Darbo lapai. Pridėti po: = darbalapiai (darbalapiai. Skaičius)

Aukščiau pateiktas kodas naudojamas įterpti naują darbalapį po paskutinio darbalapio darbalapio.

Kodus galima lengvai suprasti, nes aš pridėjau komentarus kartu su makrokomandos kodais.

Sekite toliau pateiktą kodą

 Sub CopyDataBasedOnDate () „Ekrano atnaujinimų išjungimas Application.ScreenUpdating = False“ Dviejų duomenų tipo kintamųjų deklaravimas „Dim StartDate“, „EndDate as Date“ „Deklaruoti kintamąjį darbalapio objektui Dim MainWorksheet As Workheet“ Datos kintamųjų inicijavimas su pradžios data iš langelio J8 “ir pabaigos data iš „Macro“ lapo J9 langelio StartDate = Sheets („Macro“). Diapazonas („J8“). Vertė EndDate = Sheets („Macro“). Diapazonas („J9“). Reikšmė „Inicijuojamas darbalapio objektas su" RawData "darbalapis Nustatykite MainWorksheet = Worksheets (" RawData ") 'Aktyvinkite darbalapio objektą MainWorksheet.Activate' Duomenų rūšiavimas pagal datą A stulpelyje didėjančia tvarka Diapazonas (" A1 "). CurrentRegion.Sort _ key1: = Diapazonas (" A1 "), order1: = xlAccending, _ Header: = xlTaip 'Filtruokite duomenis pagal dienų seką tarp pradžios datos ir pabaigos datų sekos (" A1 "). CurrentRegion.AutoFilter Field: = 1, Criteria1: = _"> = " & StartDate, Operator: = xlAnd, Criteria2: = "<=" & EndDate 'Nukopijuokite filtro duomenis ActiveSheet.AutoFilter.Range.Copy' Įterpiant naują darbą ksheet po paskutinio darbalapio darbalapio darbalapių. Pridėti po: = darbalapiai (darbalapiai. Skaičius) 'Nukopijuotų duomenų įklijavimas ActiveSheet.Paste' Automatinis pasirinktų stulpelių dydžio koregavimas Selection.Columns.AutoFit Range ("A1"). Pasirinkite ' „RawData“ lapo „MainWorksheet“ aktyvinimas. Aktyvinti „Filtro pašalinimas iš darbalapio, kurį taikėme anksčiau„ Selection.AutoFilter Sheets “(„ Macro “). 

Jei jums patiko šis tinklaraštis, pasidalykite juo su draugais „Facebook“. Be to, mus galite sekti „Twitter“ ir „Facebook“.

Mes norėtume išgirsti jūsų nuomonę, praneškite mums, kaip galime pagerinti savo darbą ir padaryti jį geresnį. Rašykite mums el