Ако рукујете са више листова одједном и желите да копирате податке са сваког листа у главни радни лист, требало би да прочитате овај чланак. Користићемо својство цуррентрегион ВБА кода за консолидацију података са свих радних листова у један лист. Ово својство је корисно за многе операције које аутоматски проширују избор тако да укључују читав тренутни регион, као што је метода АутоФормат. Ово својство се не може користити на заштићеном радном листу.
Услов је: сваки лист треба да садржи сличан формат, односно исти број колона; користећи исти формат можемо имати прецизно спојене податке.
Напомена: овај чланак ће демонстрирати коришћење ВБА кода; ако се из било ког разлога број колона разликује на једном од листова, тада цели спојени подаци неће дати тачну слику. Препоручује се коришћење истог броја колона. ВБА код ће додати нови лист у радну свеску, а затим копирати и залепити податке након сваког листа без преписивања.
Узмимо пример 3 листа, наиме јануар, фебруар и март. Следи снимак ових листова:
Да бисмо комбиновали податке са свих листова у један лист, морамо да следимо кораке у наставку да бисмо покренули ВБ едитор:
- Кликните на картицу Девелопер
- Из групе кодова изаберите Висуал Басиц
- Копирајте доњи код у стандардни модул
Суб ЦопиЦуррентРегион () Дим сх Као радни лист Дим ДестСх Као радни лист Дим Ласт Ас Лонг Иф СхеетЕкистс ("Мастер") = Труе Тхен МсгБок "Мастер Мастер листа већ постоји" Екит Суб Енд Иф Апплицатион.СцреенУпдатинг = Фалсе Сет ДестСх = Ворксхеетс.Адд ДестСх .Наме = "Мастер" За свако сх у овој радној свесци.Радни листови Ако је сх.Наме ДестСх.Наме Онда ако је сх.УседРанге.Цоунт> 1 Онда Ласт = ЛастРов (ДестСх) сх.Ранге ("А1"). ЦуррентРегион.Цопи ДестСх. Ћелије (Ласт + 1, 1) Енд Иф Енд Иф Нект Апплицатион.СцреенУпдатинг = Труе Енд Суб Суб ЦопиЦуррентРегионВалуес () Дим сх Ас Ворксхеет Дим ДестСх Ас Ворксхеет Дим Ласт Ас Лонг Иф СхеетЕкистс ("Мастер") = Труе тхен МсгБок "Лист Мастер већ постоји "Екит Суб Енд Иф Апплицатион.СцреенУпдатинг = Фалсе Сет ДестСх = Ворксхеетс.Адд ДестСх.Наме =" Мастер "За свако сх у овој радној књизи. Радни листови Ако је сх.Наме ДестСх.Наме Онда ако је сх.УседРанге.Цоунт> 1 Затим Ласт = ЛастРов (ДестСх) Витх сх.Ранге ("А1"). ЦуррентРегион ДестСх.Целлс (Ласт + 1, 1) .Ресизе (.Ровс.Цоунт, _ .Цолумнс.Цоунт) .Валуе = .Вредност Енд Витх Енд Иф Енд Иф Нект Апплицатион.СцреенУпдатинг = Труе Енд Суб Фунцтион ЛастРов (сх Ас Ворксхеет) Он Еррор Ресуме Нект ЛастРов = сх.Целлс.Финд (Вхат: = "*", _ Афтер: = сх.Ранге ("А1"), _ Тражи: = клПарт, _ ЛоокИн: = клФормулас, _ СеарцхОрдер: = клБиРовс, _ СеарцхДирецтион: = клПревиоус, _ МатцхЦасе: = Фалсе). Грешка при поновном покретању Иди на 0 Заврши функцију Функција Ластцол (сх као радни лист ) Он Еррор Ресуме Нект Ластцол = сх.Целлс.Финд (Вхат: = "*", _ Афтер: = сх.Ранге ("А1"), _ Лоокат: = клПарт, _ ЛоокИн: = клФормулас, _ СеарцхОрдер: = клБиЦолумнс , _ СеарцхДирецтион: = клПревиоус, _ МатцхЦасе: = Фалсе) .Цолумн Он Еррор ГоТо 0 Енд Фунцтион Фунцтион СхеетЕкистс (СНаме Ас Стринг, _ Оптионал БиВал ВБ Ас Воркбоок) Као Боолеан Он Еррор Настави даље Ако ВБ није ништа Затим поставите ВБ = ТхисВоркбоок СхеетЕкистс = ЦБоол (Лен (Схеетс (СНаме) .Наме)) Крајња функција
Макро ЦопиЦуррентРегион ће позвати функцију „СхеетЕкистс“ и провериће да ли постоји назив радног листа са „Мастер“; ако се пронађе, неће ништа учинити, иначе ће уметнути нови радни лист у активну радну свеску и преименовати га у „Мастер“, а затим ће копирати податке са свих листова.
Следе снимци обједињених података:
Напомена: Узорак радне свеске садржи Мастер радни лист; предлаже се да избришете главни радни лист, а затим покренете макро да бисте видели како ВБА код ради.
Закључак:Сада имамо код који можемо користити за пренос података са сваког радног листа на један лист.
Ако вам се допадају наши блогови, поделите их са пријатељима на Фацебооку. Такође нас можете пратити на Твиттер -у и Фацебоок -у.
Волели бисмо да чујемо од вас, реците нам како можемо побољшати, допунити или иновирати наш рад и учинити га бољим за вас. Пишите нам на веб локацији е -поште