В тази статия ще създадем макрос за извличане на данни от работен лист с необработени данни в нов работен лист въз основа на посочения период от време.
Суровите данни се състоят от три колони. Първата колона съдържа дати, втората колона съдържа имена на агенти, а третата колона съдържа броя на продажбите, извършени от агент на тази конкретна дата.
Преди да стартирате макроса, от потребителя се изискват два входа. Потребителят трябва да определи началната и крайната дата. Въз основа на посочените дати макросът ще извлече данните между определения период от време в нов работен лист.
След като посочи началната и крайната дата, потребителят трябва да кликне върху бутона „Изпращане“, за да изпълни макроса.
При стартиране на макроса той ще сортира данни в листа „RawData“ въз основа на колона за дата и ще извлича данни въз основа на посочения период от време в новоинсталирания работен лист.
Логично обяснение
Макросът приема данни за начална и крайна дата съответно от клетки J8 и J9. Този макрос първо сортира данните в листа „RawData“ въз основа на колона А във възходящ ред. Ние сортирахме данните според стойностите на датите, така че да можем да копираме данните в един диапазон, след като приложим филтър за определения диапазон.
След като сортирате данните, приложете филтъра върху тях. Приложеният филтър се основава на две условия, първото условие е стойността в колона А да бъде по -голяма или равна на началната дата, а второто условие е стойността в колона А да бъде по -малка или равна на крайната дата.
След прилагане на филтъра, новият работен лист се вмъква и филтрираните данни се копират и поставят в него.
Обяснение на кода
Обхват ("A1"). CurrentRegion.Sort key1: = Диапазон ("A1"), order1: = xlAscending, Header: = xlДа
Горният код се използва за сортиране на данни в определения диапазон. Key1 определя колоната, въз основа на която данните ще бъдат сортирани. Редът за сортиране се предоставя от заповед1. Вече определихме възходящия ред. За да дефинирате низходящ ред, можете да използвате xlDescending константа. Заглавката се използва за определяне дали диапазонът от данни съдържа заглавката.
Диапазон ("A1"). CurrentRegion.AutoFilter Поле: = 1, Criteria1: = "> =" & StartDate, Operator: = xlAnd, Criteria2: = "<=" & EndDate
Горният код се използва за прилагане на филтър към обхвата на данните. Поле 1 указва номера на колоната, към която ще се приложи филтър. Критерии1 и Критерии2 определят условията, въз основа на които данните ще се филтрират. Операторът определя оператора, който ще се използва между две условия.
Работни листове. Добавяне след: = Работни листове (Работни листове. Брой)
Горният код се използва за вмъкване на новия работен лист след последния работен лист в работна книга.
Човек може лесно да разбере кодовете, тъй като съм сложил коментари заедно с кодовете в макроса.
Моля, следвайте кода по -долу
Sub CopyDataBasedOnDate () „Деактивиране на актуализациите на екрана Application.ScreenUpdating = False“ Деклариране на две променливи на тип данни за дата Dim StartDate, EndDate като дата „Деклариране на променлива за обект на работен лист Dim MainWorksheet като работен лист„ Инициализиране на променливите Date с начална дата от клетка J8 “и крайна дата от клетка J9 на „Макро“ лист StartDate = Листове („Макро“). Обхват („J8“). Стойност EndDate = Листове („Макро“). Обхват („J9“). Стойност „Инициализиране на обект на работен лист с„ RawData "работен лист Набор MainWorksheet = Работни листове (" RawData ") 'Активиране на обекта на работния лист MainWorksheet.Activate' Сортиране на данните по дата в колона А във възходящ ред Обхват (" A1 "). CurrentRegion.Sort _ key1: = Range (" A1 "), order1: = xlAscending, _ Header: = xlДа 'Филтрирайте данните въз основа на диапазона от дати между началната дата и обхвата на крайната дата (" A1 "). CurrentRegion.AutoFilter Field: = 1, Criteria1: = _"> = " & StartDate, Operator: = xlAnd, Criteria2: = "<=" & EndDate 'Копирайте филтърните данни ActiveSheet.AutoFilter.Range.Copy' Вмъкване на нова версия ksheet след последния работен лист в работната книга Worksheets.Add after: = Worksheets (Worksheets.Count) 'Поставяне на копираните данни ActiveSheet.Paste' Автоматично регулиране на размера на избраните колони Selection.Columns.AutoFit Range ("A1"). Select ' Активиране на листа "RawData" MainWorksheet.Activate 'Премахване на филтъра от работния лист, който приложихме по -рано Selection.AutoFilter Sheets ("Macro"). Активирайте End Sub
Ако този блог ви е харесал, споделете го с приятелите си във Facebook. Също така можете да ни следвате в Twitter и Facebook.
Ще се радваме да чуем от вас, уведомете ни как можем да подобрим работата си и да я направим по -добра за вас. Пишете ни на имейл сайта