Excel VBA е неразделна част от автоматизацията на Excel и използването и предимствата на VBA не могат да бъдат подкопани. Ако сте в трудна битка, опитвайки се да консолидирате множество листа и работни книги в Excel, ние сме тук, за да ви помогнем.

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

Следвайки този урок, вие ще създадете свой собствен VBA макрос в Excel и ефективно ще обедините няколко листа в един файл.

Обединяване на няколко листа на Excel в един файл

За тази задача данните се съхраняват в следните листове:

  • лист1
  • лист 2
  • Лист3

Имената на листове, изброени по-горе, са само за илюстративни цели. Този VBA макрос е общ и не зависи от имената на листовете; можете да персонализирате кода, за да го използвате с всяко име на лист (и).

Предварителни условия за изпълнение на кода

Има някои предпоставки за изпълнение на VBA кода, изброени по-долу.

Трябва да съхраните кода на макроса в нов файл на Excel. Запазете тази работна книга с a

instagram viewer
.xlsm разширение. Можете да запазите VBA макро работната книга с произволно име.

Отворете нов файл на Excel; Натиснете Alt + F11 на клавиатурата си, за да отворите редактора на Excel VBA. След като редакторът се отвори, добавете нов кодов модул, като щракнете върху Вмъкване раздел в горната част. Изберете модул да поставите нов модул; тук ще въвеждате макрокода на VBA, даден по-долу.

Листовете с данни, които трябва да бъдат консолидирани, трябва да бъдат изцяло в друга отделна работна книга. Името на работната книга и листовете може да бъде каквото изберете.

Веднага след като изпълните VBA кода, макросът на VBA ще премине през всеки наличен работен лист в основна работна книга (работна книга с данни) и поставете съдържанието в новодобавен лист в същия работна книга.

Консолидираните данни ще бъдат налични в листа с име Консолидиран.

Изпълнение на VBA кода

Време е да стартирате новозапазения макрокод. Копирайте и поставете този код в модула на VBA редактора:

Sub consolidate_shts()
'декларирайте различните променливи, използвани в кода и типовете данни vba
Dim sht като работен лист, sht1 като работен лист, lastrow като цяло число, lastrow1 като цяло число
'забранете трептенето на екрана и изскачащите прозорци за предупреждение по време на изпълнение
С приложение
.ScreenUpdating = False
.DisplayAlerts = False
Край с
'съхранява името на основната работна книга в макропроменливата a. Заменете Test.xlsx с името на основната си работна книга
Задайте wbk1 = Работни книги("Test.xlsx")
„активирайте работната книга, преди да изпълните функцията(и) върху нея
wbk1.Активирайте
'изпълнете цикъл vba for, за да проверите дали вече съществува лист Consolidated. Ако съществува, цикълът for ще го изтрие.
За всеки sht В wbk1.Sheets
Ако sht. Име = "Консолидиран" След това sht. Изтрий
Следващото нещо
„Добавете нов лист, за да съхранявате новите консолидирани данни
Работни листове. Добавете. Име = "Консолидиран"
„Добавете някои заглавки към всяка отделна колона в консолидирания лист
С листове („Консолидирани“)
.Range("a1").Стойност = "Дата на поръчката"
.Range("b1").Стойност = "Регион"
.Range("c1").Value = "Rep"
.Range("d1").Стойност = "Елемент"
.Range("e1").Стойност = "Единици"
.Range("f1").Стойност = "Единична цена"
.Range("g1").Стойност = "Общо"

Край с
„Новосъздаденият консолидиран лист ще съдържа консолидираните данни от всеки отделен лист в основната работна книга

За i = 1 Към wbk1.Работни листове. Броя
Ако Sheets (i).Name <> "Consolidated" Тогава
„Уловете последния попълнен ред от листовете с данни в работната книга
lastrow = Листове (i).Обхват("a1").Край (xlDown).Row
„Заснемане на последния попълнен ред в консолидирания лист
lastrow1 = wbk1.Sheets("Consolidated").Range("a1048576").Край (xlUp).Row + 1

„Копирайте данните от изходния лист и ги поставете в консолидирания лист
Sheets (i).Range("a2:g" & lastrow).Copy Destination:=Sheets("Consolidated").Range("a" & lastrow1)
Край, ако
Следваща и
„Активирайте функциите на Excel VBA за бъдеща употреба
С приложение
.ScreenUpdating = Вярно
.DisplayAlerts = Вярно
Край с

Край под

Обяснение на VBA кода

Първо, декларирайте всички променливи, които използвате в кода, и им задайте правилните типове данни на VBA, за да може кодът да работи безпроблемно.

След като декларирате променливите, е необходимо малко основно домакинство. Това става чрез деактивиране на трептене на екрана и потискане на изскачащи предупреждения. Например, когато изтриете съществуващ лист с помощта на VBA кода, подкана в Excel иска потвърждение, преди да изтриете листа. Подкани като този се потискат, за да се подобри скоростта на изпълнение.

В следващата стъпка трябва да дефинирате името на работната книга, което съдържа всичките ви данни. Сменете Test.xlsx с името и разширението на името на вашата работна книга. Уверете се, че сте обградили името с кавички.

Активирайте основната работна книга и изтрийте всички съществуващи листове с името Консолидиран за да премахнете всички по-рано съхранени данни. VBA кодът преминава през всеки лист и веднага щом срещне името на листа Консолидиран ще го изтрие. Това се прави с помощта на VBA IF изявление, който проверява за логически условия и изтрива листа веднага щом условието бъде изпълнено.

Нов лист се добавя към основната работна книга за съхраняване на консолидираните данни. Впоследствие към този лист се добавят предварително форматирани, стандартизирани заглавки. Можете да промените стойностите на заглавията (заглавките на колоните), като актуализирате информацията до препратките към клетките в кавички.

Например: .Range(“a1”) = „Дата на поръчката“ може да бъде заменен с .Range(“a1”) = „Номер на поръчка“

След това цикъл VBA FOR превключва през всеки работен лист, копира съдържанието на листа и поставя съдържанието в Консолидиран работен лист, преди да преминете към следващия лист в работната книга. Този процес се повтаря, докато всички листове не бъдат копирани.

По време на този процес всички редове се изчисляват автоматично и се поставят в консолидирания лист. Последният попълнен ред се изчислява автоматично, преди данните да бъдат поставени. Макросът е динамичен и може да се адаптира към различни редове с данни във всеки работен лист.

Свързани: Разширени функции на Microsoft Excel, които трябва да знаете

След като данните от всички листове бъдат поставени в основния консолидационен лист, макросът се премества към последния етап от кода. Първоначално деактивираните VBA функции се активират отново за бъдеща употреба.

Консолидиране на няколко листа с помощта на макрос на Excel VBA

Excel VBA е излишен език за програмиране, който работи добре с всички компоненти на Excel. Всяка част от кода е от съществено значение и е важно да запомните, че изпълнението зависи от система за изпълнение ред по ред, така че не трябва да променяте реда на редовете на кода.

За да персонализирате кода според вашите изисквания, можете да направите необходимите промени и да изпълните този код, за да консолидирате ефективно и ефективно данните за секунди.

5 страхотни макроса на Microsoft Excel за сортиране на данни

Направете управлението на данни лесно с тези макроси на Excel.

Прочетете Следващото

Дялтуителектронна поща
Свързани теми
  • Програмиране
  • Microsoft Excel
  • Макроси
  • Програмиране
За автора
Гаурав Сиял (21 публикувани статии)

Gaurav Siyal има две години опит в писането, като пише за серия от фирми за дигитален маркетинг и документи за жизнения цикъл на софтуера.

Още от Gaurav Siyal

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, ревюта, безплатни електронни книги и ексклузивни оферти!

Щракнете тук, за да се абонирате