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