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

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

С това ръководство можете да създадете свой собствен макрокод на Excel VBA, за да консолидирате множество работни книги, всичко това за броени минути (ако файловете с данни са много).

Предварителни условия за създаване на свой собствен VBA макрокод

Имате нужда от една работна книга, за да поместите VBA кода, докато останалите работни книги с изходни данни са отделни. Освен това създайте една работна книга Консолидиран за да съхранявате консолидираните данни от всичките си работни книги.

instagram viewer

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

Създаване на свой собствен Excel VBA код

След като предпоставките изчезнат, е време да се задълбочите в кода и да започнете да хакнете основите, за да го адаптирате към вашите изисквания.

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

Натисни Alt+F11 клавиша на Excel, за да отворите редактора на макрокод на VBA. Поставете кода, написан по-долу, и запазете файла като работна книга с активиран макрос (.xlsm разширение).

Подотворени файлове()

'декларирайте променливите, използвани в кода на VBA

Dim MyFolder като низ, MyFile като низ, wbmain като работна книга, lastrow докато дълго

„деактивирайте тези функции, за да подобрите обработката на кода

С приложение
.DisplayAlerts = False
.ScreenUpdating = False
Край с

'променете пътя на папката, където вашите файлове ще бъдат запазени

MyFolder = InputBox("Въведете пътя на папката за консолидиране") & "\"

'дефинирайте препратката на папката в макропроменлива

MyFile = Dir (Моята папка)

„отворете цикъл, за да преминете през всяка отделна работна книга, съхранявана в папката

Правете, докато Len (MyFile) > 0

„активирайте работната книга за консолидиране

Windows("Консолидация").Активирайте

'изчислете последния попълнен ред

Диапазон("a1048576").Изберете
Избор. Край (xlUp). Изберете
ActiveCell. Отместване (1, 0). Изберете

'отворете първата работна книга в папката Консолидация

Работни тетрадки. Отворете Filename:=MyFolder & MyFile

Windows (MyFile).Активиране

„превключете през всеки лист в работните книги, за да копирате данните

Dim ws като работен лист
За всеки ws В листове

ws. Активирате
ws. AutoFilterMode = False

„игнорирайте заглавката и копирайте данните от ред 2
Ако клетки (2, 1) = "" Тогава отидете на 1

Отидете до 10

1: Следваща

10: Диапазон("a2:az20000"). Копиране

Windows("Консолидация").Активирайте

'поставете копираното съдържание

ActiveSheet. Поставете

Windows (MyFile).Активиране

„затворете отворената работна книга, след като данните бъдат поставени

ActiveWorkbook. Близо

'изпразнете кеша, за да съхраните стойността на следващата работна книга

MyFile = Dir()

'отворете следващия файл в папката

Примка

'активирайте деактивираните функции за бъдеща употреба

С приложение
.DisplayAlerts = Вярно
.ScreenUpdating = Вярно
Край с

Край под

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

Първата част от кода е дефиниране на подпрограма, която съдържа целия ви VBA код. Дефинирайте подпрограмата с под, последвано от името на кода. Подимето може да бъде всяко; в идеалния случай трябва да запазите име, подходящо за кода, който ще напишете.

Свързани: Уебсайтове и блогове, за да научите съвети и трикове на Excel

Excel VBA разбира създадените от потребителя променливи и съответните им типове данни, декларирани с тъмно (измерение).

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

Потребителят ще бъде подканен за пътя на папката, където се съхраняват файловете с данни. Създава се цикъл за отваряне на всяка работна книга, съхранявана в папката, копиране на данните от всеки лист и добавяне към Консолидация работна книга.

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

Тъй като цикълът отваря първия изходен файл, филтрите се премахват от всеки отделен лист (ако са съществуват) и данните, вариращи от A2 до AZ20000, ще бъдат копирани и поставени в консолидацията работна книга.

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

Свързани: Най-добрите онлайн курсове за овладяване на Advanced Excel

И накрая, изходният файл се затваря, след като всички данни бъдат поставени. Следващата работна книга се отваря, така че макросът на VBA да може да повтори същите стъпки за следващия набор от файлове.

Цикълът е кодиран да работи, докато всички файлове се актуализират автоматично в главната работна книга.

Потребителски персонализации

Понякога не искате да се притеснявате за вградените подкани, особено ако сте крайният потребител. Ако предпочитате твърдо да кодирате пътя на папката Consolidation в кода, можете да промените тази част от кода:

MyFolder = InputBox("Въведете пътя на папката за консолидиране") & "\"

Да се:

MyFolder = „Път към папката“ и „\“

Освен това можете също да промените препратките към колоните, тъй като стъпката не е включена в този код. Просто заменете препратката към крайната колона с последната попълнена стойност на колона (AZ, в този случай). Трябва да запомните, че последният попълнен ред се изчислява чрез кода на макроса, така че трябва да промените само препратката към колоната.

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

Консолидиране на множество работни книги с помощта на макрос на Excel VBA

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

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

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

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

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

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

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

Още от Gaurav Siyal

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

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

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