Когато работите с различни източници на данни, често може да се затруднявате да компилирате множество работни книги и работни листове, преди да стигнете до един последен елемент от данни. Представете си ситуация, в която имате няколкостотин работни книги, които да комбинирате, преди дори да можете да започнете деня си.
Никой не иска да прекарва безкрайни часове, работейки върху различни източници, отваряйки всяка работна книга, копирайки и поставяйки данните от различни листове, преди накрая да направи една консолидирана работна книга. Ами ако VBA макрос може да направи това вместо вас?
С това ръководство можете да създадете свой собствен макрокод на Excel VBA, за да консолидирате множество работни книги, всичко това за броени минути (ако файловете с данни са много).
Предварителни условия за създаване на свой собствен VBA макрокод
Имате нужда от една работна книга, за да поместите VBA кода, докато останалите работни книги с изходни данни са отделни. Освен това създайте една работна книга Консолидиран за да съхранявате консолидираните данни от всичките си работни книги.
Създайте папка Консолидация на предпочитаното от вас място, за да съхранявате всичките си изходни работни книги. Когато макросът се изпълнява, той ще превключва през всяка работна книга, съхранена в тази папка, ще копира съдържанието от различни листове и ще го постави в консолидираната работна книга.
Създаване на свой собствен 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 систематично преминава през всеки ред с код и го изпълнява ред по ред.
Ако направите някакви промени в кода, трябва да сте сигурни, че не променяте реда на кодовете, тъй като това ще наруши изпълнението на кода.
Направете управлението на данни лесно с тези макроси на Excel.
Прочетете Следващото
- Програмиране
- Програмиране
- Microsoft Excel
Gaurav Siyal има две години опит в писането, като пише за серия от фирми за дигитален маркетинг и документи за жизнения цикъл на софтуера.
Абонирайте се за нашия бюлетин
Присъединете се към нашия бюлетин за технически съвети, ревюта, безплатни електронни книги и ексклузивни оферти!
Щракнете тук, за да се абонирате