Екцел ВБА је саставни део аутоматизације Екцел-а, а употреба и предности ВБА-а се не могу угрозити. Ако сте у тешкој борби покушавајући да обједините више листова и радних свеска у Екцел-у, ми смо ту да вам помогнемо.

Макрои поменути у овом водичу ће вам помоћи да постигнете наизглед непремостиви задатак за неколико секунди (или минута, ако су подаци велики).

Пратећи овај водич, креираћете сопствени ВБА макро у Екцел-у и ефикасно спојити више листова у једну датотеку.

Спајање више Екцел листова у једну датотеку

За овај задатак, подаци се чувају у следећим листовима:

  • Схеет1
  • Схеет2
  • Схеет3

Горе наведени називи листова служе само у сврху илустрације. Овај ВБА макро је генерички и не зависи од назива листова; можете прилагодити код да га користите са било којим именом(овима) листа.

Предуслови за покретање кода

Постоје неки предуслови за покретање ВБА кода који су наведени у наставку.

Морате да сачувате макро код у новој Екцел датотеци. Сачувајте ову радну свеску са а .клсм проширење. Можете да сачувате ВБА макро радну свеску са било којим именом.

Отворите нову Екцел датотеку; притисните Алт + Ф11 на тастатури да бисте отворили Екцел ВБА едитор. Када се отвори уређивач, додајте нови модул кода кликом на Уметните картица на врху. Изаберите Модул да убаците нови модул; овде ћете уносити ВБА макро код дат у наставку.

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

Чим извршите ВБА код, ВБА макро ће се кретати кроз сваки доступан радни лист у примарну радну свеску (радну свеску са подацима) и налепите садржај у новододати лист у оквиру исте радна свеска.

Консолидовани подаци ће бити доступни у листу под називом Консолидовани.

Покретање ВБА кода

Време је да покренете ново сачувани макро код. Копирајте и налепите овај код у модул ВБА едитора:

Суб цонсолидате_схтс()
'декларисати различите варијабле које се користе унутар кода и вба типова података
Дим схт као радни лист, схт1 као радни лист, ластров као цео број, ластров1 као цео број
'онемогућите треперење екрана и искачуће прозоре упозорења током извршавања
Са апликацијом
.СцреенУпдатинг = Фалсе
.ДисплаиАлертс = Фалсе
Завршити
'сачувајте име примарне радне свеске у макро променљивој. Замените Тест.клск именом своје примарне радне свеске
Поставите вбк1 = Радне свеске("Тест.клск")
„активирајте радну свеску пре него што извршите функцију(е) на њој
вбк1.Ацтивате
'покрените вба фор петљу да проверите да ли лист Цонсолидатед већ постоји. Ако постоји, фор петља ће га избрисати.
За сваки схт У вбк1.Схеетс
Ако схт. Име = "Консолидовани" Затим схт. Избриши
Следећи схт
„Додајте нови лист за складиштење новоконсолидованих података
Радни листови. Додати. Назив = "Консолидовани"
„Додајте нека заглавља у сваку појединачну колону у оквиру обједињеног листа
Са листовима („Консолидовани“)
.Ранге("а1").Валуе = "Датум поруџбине"
.Ранге("б1").Валуе = "Регион"
.Ранге("ц1").Валуе = "Реп"
.Ранге("д1").Валуе = "Ставка"
.Ранге("е1").Валуе = "Јединице"
.Ранге("ф1").Валуе = "УнитЦост"
.Ранге("г1").Валуе = "Укупно"

Завршити
„Ново креирани консолидовани лист ће садржати консолидоване податке са сваког појединачног листа у примарној радној свесци

За и = 1 За вбк1.Радни листови. Цоунт
Ако листови (и).Назив <> "Консолидовани" Онда
„Ухватите последњи попуњени ред из листова са подацима у радној свесци
ластров = Схеетс (и).Ранге("а1").Енд (клДовн).Ров
„Ухватите последњи попуњени ред у Консолидованом листу
ластров1 = вбк1.Схеетс("Цонсолидатед").Ранге("а1048576").Крај (клУп).Ров + 1

„Копирајте податке из изворног листа и налепите их у консолидовани лист
Схеетс (и).Ранге("а2:г" & ластров).Цопи Дестинатион:=Схеетс("Цонсолидатед").Ранге("а" & ластров1)
Крај Ако
Затим сам
„Омогућите Екцел ВБА функције за будућу употребу
Са апликацијом
.СцреенУпдатинг = Тачно
.ДисплаиАлертс = Тачно
Завршити

Енд Суб

Објашњење ВБА кода

Прво, декларишите све променљиве које користите у оквиру кода и доделите им исправне ВБА типове података да би код радио без проблема.

Када декларишете варијабле, потребно је нешто основног одржавања. Ово се постиже онемогућавањем треперења екрана и потискивањем искачућих упозорења. На пример, када избришете постојећи лист помоћу ВБА кода, одзивник у програму Екцел тражи потврду пре брисања листа. Овакви упити се потискују да би се повећала брзина извршења.

У следећем кораку, потребно је да дефинишете назив радне свеске, који садржи све ваше податке. Заменити Тест.клск са именом и екстензијом назива ваше радне свеске. Обавезно окружите име наводницима.

Активирајте примарну радну свеску и избришите све постојеће листове са именом Консолидовани да бисте елиминисали све претходно ускладиштене податке. ВБА код се креће кроз сваки лист и чим наиђе на име листа Консолидовани то ће га избрисати. Ово се ради помоћу ВБА ИФ изјава, који проверава логичке услове и брише лист чим се услов испуни.

Нови лист се додаје примарној радној свесци за складиштење консолидованих података. Након тога, овом листу се додају унапред форматирана, стандардизована заглавља. Можете променити вредности наслова (заглавља колона) ажурирањем информација поред референци ћелија унутар наводника.

На пример: .Ранге(“а1”) = “Датум поруџбине” може се заменити са .Распон(“а1”) = “Број поруџбине”

Затим, ВБА ФОР петља прелази кроз сваки радни лист, копира садржај листа и лепи садржај у Консолидовани радни лист пре преласка на следећи лист у радној свесци. Овај процес се понавља док се сви листови не копирају.

Током овог процеса, сви редови се аутоматски израчунавају и лепе у Консолидовани лист. Последњи попуњени ред се аутоматски израчунава пре него што се подаци налепе. Макро је динамичан и може се прилагодити различитим редовима података унутар сваког радног листа.

Повезан: Напредне функције Мицрософт Екцел-а које морате знати

Када се подаци из свих листова налепе у главни консолидовани лист, макро се помера на последњи део кода. ВБА функције које су првобитно онемогућене поново су омогућене за будућу употребу.

Обједињавање више листова помоћу Екцел ВБА макроа

Екцел ВБА је сувишан програмски језик, који добро функционише са свим компонентама програма Екцел. Сваки део кода је неопходан и важно је запамтити да извршење зависи од система извршавања ред по ред, тако да не би требало да мењате редослед линија кода.

Да бисте прилагодили код својим захтевима, можете да унесете потребне промене и покренете овај код да бисте ефикасно и ефективно консолидовали податке за неколико секунди.

5 цоол Мицрософт Екцел макроа за сортирање података

Учините управљање подацима лаким помоћу ових Екцел макроа.

Реад Нект

ОбјавиТвеетЕмаил
Повезане теме
  • Програмирање
  • Мицрософт Екцел
  • Макрои
  • Програмирање
О аутору
Гаурав Сииал (Објављено 21 чланака)

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

Више од Гаурав Сииал

Претплатите се на наш билтен

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

Кликните овде да бисте се претплатили