Копирајте податке са датумом између два дефинисана датума на нови радни лист помоћу ВБА

Anonim

У овом чланку ћемо створити макро за издвајање података из радног листа сирових података у нови радни лист, на основу наведеног периода.

Сирови подаци се састоје од три колоне. Прва колона садржи датуме, друга колона садржи имена агената, а трећа колона садржи податке о продаји коју је агент остварио тог датума.

Пре покретања макроа, од корисника су потребна два уноса. Корисник мора дефинирати датум почетка и завршетка. На основу наведених датума, макро ће издвојити податке између дефинисаног периода у нови радни лист.

Након одређивања датума почетка и завршетка, корисник мора притиснути дугме „Пошаљи“ да би извршио макро.

Приликом покретања макроа сортират ће податке у листу „РавДата“ на основу колоне датума и издвојити податке на основу наведеног распона датума у ​​ново уметнути радни лист.

Логичко објашњење

Макро узима унос за датуме почетка и завршетка из ћелија Ј8, односно Ј9. Овај макро прво сортира податке у листу „РавДата“ на основу колоне А у растућем редоследу. Сортирали смо податке према вредностима датума, тако да можемо копирати податке у један опсег, након примене филтера за дефинисани опсег.

Након сортирања података, примените филтер на њих. Примењени филтер заснива се на два услова, први услов је да вредност у колони А треба да буде већа или једнака датуму почетка, а други услов је да вредност у колони А треба да буде мања или једнака датуму завршетка.

Након примене филтера, нови радни лист се убацује и филтрирани подаци се копирају и залепе у њега.

Објашњење кода

Опсег ("А1"). ЦуррентРегион.Сорт кеи1: = Опсег ("А1"), ордер1: = клАсцендинг, Хеадер: = клДа

Горњи код се користи за сортирање података у дефинисаном опсегу. Кључ 1 одређује колону на основу које ће се подаци сортирати. Редослед сортирања је обезбеђен по налогу1. Већ смо дефинисали растући редослед. За дефинисање опадајућег редоследа може се користити константа клДесцендинг. Заглавље се користи за спецификацију да ли опсег података садржи заглавље.

Опсег ("А1"). ЦуррентРегион.АутоФилтер Поље: = 1, Цритериа1: = "> =" & СтартДате, Оператор: = клАнд, Цритериа2: = "<=" & ЕндДате

Горњи код се користи за примену филтера на опсег података. Поље 1 одређује број колоне на коју ће се филтер применити. Критеријуми1 и Критеријуми2 дефинишу услове на основу којих ће се подаци филтрирати. Оператор наводи оператора који ће се користити између два услова.

Радни листови. Додати после: = Радни листови (Радни листови.Број)

Горњи код се користи за уметање новог радног листа након последњег радног листа у радну свеску.

Кодови се лако могу разумети, јер сам ставио коментаре заједно са кодовима у макро.

Молимо следите доле за код

 Суб ЦопиДатаБаседОнДате () 'Онемогућавање ажурирања екрана Апплицатион.СцреенУпдатинг = Фалсе' Декларисање две променљиве типа података Дате Дим СтартДате, ЕндДате Ас Дате 'Декларисање променљиве за објекат радног листа Дим МаинВорксхеет као радни лист' Иницијализација променљивих датума са почетним датумом из ћелије Ј8 'и датум завршетка из ћелије Ј9 листа "Макро" СтартДате = Табеле ("Макро"). Опсег ("Ј8"). Вредност Крајњи датум = Табеле ("Макро"). Опсег ("Ј9"). Вредност 'Покретање објекта радног листа са " РавДата "радни лист Сет МаинВорксхеет = Ворксхеетс (" РавДата ") 'Активирање објекта радног листа МаинВорксхеет.Ацтивате' Сортирање података према датуму у колони А у растућем опсегу (" А1 "). ЦуррентРегион.Сорт _ кеи1: = Ранге (" А1 "), ордер1: = клАсцендинг, _ Хеадер: = клДа 'Филтрирајте податке на основу распона датума између датума почетка и датума завршетка (" А1 "). ЦуррентРегион.АутоФилтер Фиелд: = 1, Цритериа1: = _"> = " & СтартДате, Оператор: = клАнд, Цритериа2: = "<=" & ЕндДате 'Копирајте податке филтера АцтивеСхеет.АутоФилтер.Ранге.Цопи' Уметање нове верзије ксхеет после последњег радног листа у радној свесци Ворксхеетс.Адд афтер: = Ворксхеетс (Ворксхеетс.Цоунт) 'Лепљење копираних података АцтивеСхеет.Пасте' Аутоматско подешавање величине изабраних колона Селецтион.Цолумнс.АутоФит Ранге ("А1"). Селецт ' Активирање листа "РавДата" МаинВорксхеет.Ацтивате 'Уклањање филтера са радног листа који смо применили раније Селецтион.АутоФилтер Схеетс ("Мацро"). Ацтивате Енд Суб 

Ако вам се допао овај блог, поделите га са пријатељима на Фацебооку. Такође, можете нас пратити на Твиттер -у и Фацебоок -у.

Волели бисмо да чујемо од вас, јавите нам како можемо побољшати наш рад и учинити га бољим за вас. Пишите нам на веб локацији е -поште