Skopírujte údaje s dátumom medzi dvoma definovanými dátumami do nového hárka pomocou VBA

Anonim

V tomto článku vytvoríme makro na extrahovanie údajov z pracovného hárka nespracovaných údajov do nového pracovného hárka na základe zadaného rozsahu dátumov.

Pôvodné údaje sa skladajú z troch stĺpcov. Prvý stĺpec obsahuje dátumy, druhý stĺpec obsahuje názvy agentov a tretí stĺpec obsahuje počty tržieb realizovaných agentom v daný konkrétny dátum.

Pred spustením makra sú od používateľa požadované dva vstupy. Užívateľ musí definovať dátum začiatku a konca. Na základe zadaných dátumov makro extrahuje údaje z definovaného rozsahu dátumov do nového pracovného hárka.

Po zadaní dátumov začiatku a ukončenia musí užívateľ makro spustiť kliknutím na tlačidlo „Odoslať“.

Pri spustení makra zoradí údaje v hárku „RawData“ podľa stĺpca dátumu a extrahuje údaje podľa zadaného rozsahu dátumov do novo vloženého pracovného hárka.

Logické vysvetlenie

Makro zadáva dátumy začiatku a ukončenia z buniek J8 a J9. Toto makro najskôr zoradí údaje v hárku „RawData“ na základe stĺpca A vo vzostupnom poradí. Údaje sme zoradili podľa hodnôt dátumu, aby sme po použití filtra na definovaný rozsah mohli skopírovať údaje do jedného rozsahu.

Po zoradení údajov naň naneste filter. Použitý filter je založený na dvoch podmienkach, pričom prvou podmienkou je, aby hodnota v stĺpci A bola väčšia alebo rovnaká ako počiatočný dátum, a druhou podmienkou je, že hodnota v stĺpci A by mala byť menšia alebo rovná konečnému dátumu.

Po použití filtra sa vloží nový pracovný hárok a filtrované údaje sa skopírujú a vložia do neho.

Vysvetlenie kódu

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

Vyššie uvedený kód slúži na triedenie údajov v definovanom rozsahu. Key1 určuje stĺpec, na základe ktorého budú údaje zoradené. Zoradenie objednávky je zabezpečené poradím 1. Vzostupné poradie sme už definovali. Na definovanie zostupného poradia je možné použiť konštantu xlDescending. Hlavička sa používa na určenie, či rozsah údajov obsahuje hlavičku.

Rozsah ("A1"). Pole CurrentRegion.AutoFilter: = 1, Criteria1: = "> =" & StartDate, Operator: = xlAnd, Criteria2: = "<=" & EndDate

Vyššie uvedený kód sa používa na použitie filtra v rozsahu údajov. Pole 1 určuje číslo stĺpca, na ktorý sa bude filter používať. Kritériá 1 a Kritériá 2 definujú podmienky, na základe ktorých sa budú údaje filtrovať. Operátor určuje operátora, ktorý bude použitý medzi dvoma podmienkami.

Worksheets.Add after: = Worksheets (Worksheets.Count)

Vyššie uvedený kód sa používa na vloženie nového pracovného hárka za posledný pracovný hárok v zošite.

Kódy je možné ľahko pochopiť, pretože ku kódom v makre som pridal komentáre.

Pri kódovaní postupujte podľa nižšie uvedených pokynov

 Sub CopyDataBasedOnDate () 'Zakázanie aktualizácií obrazovky Application.ScreenUpdating = False' Deklarovanie dvoch premenných typu dátumu Dim Dim StartDate, EndDate As Date 'Deklarujúca premenná pre objekt pracovného listu Dim MainWorksheet As Worksheet' Inicializácia dátumových premenných s počiatočným dátumom z bunky J8 'a dátum ukončenia z bunky J9 listu „Makro“ StartDate = Tabuľky („Makro“). Rozsah („J8“). Hodnota EndDate = Tabuľky („Makro“). Rozsah („J9“). Hodnota „Inicializácia objektu listu pomocou“ Pracovný list RawData "MainWorksheet = Worksheets (" RawData ") 'Aktivácia objektu pracovného listu MainWorksheet.Activate' Zoradenie údajov podľa dátumu v stĺpci A vo vzostupnom poradí Rozsah („ A1 “). CurrentRegion.Sort _ key1: = Rozsah („ A1 "), order1: = xlAscending, _ Header: = xlYes 'Filtrujte údaje na základe rozsahu dátumov medzi počiatočným dátumom a koncovým dátumom („ A1 “). Pole CurrentRegion.AutoFilter: = 1, kritérium1: = _"> = " & StartDate, Operator: = xlAnd, Criteria2: = "<=" & EndDate 'Skopírujte údaje filtra ActiveSheet.AutoFilter.Range.Copy' Vkladanie nového wor ksheet za posledný list v zošite Pracovné listy. Pridať po: = Pracovné listy (Worksheets.Count) 'Vkladanie skopírovaných údajov ActiveSheet.Paste' Automatické prispôsobenie veľkosti vybratých stĺpcov Selection.Columns.AutoFit Range ("A1"). Vyberte ' Aktivácia listu MainWorksheet „RawData“. Aktivácia „Odstránenie filtra z pracovného hárka, na ktorý sme použili predchádzajúce listy Selection.AutoFilter (" Makro "). Aktivácia End Sub 

Ak sa vám tento blog páčil, zdieľajte ho so svojimi priateľmi na Facebooku. Môžete nás tiež sledovať na Twitteri a Facebooku.

Budeme radi, ak sa nám ozvete, dajte nám vedieť, ako môžeme zlepšiť našu prácu a zlepšiť ju pre vás. Napíšte nám na emailovú stránku