Kada radite s različitim izvorima podataka, često ćete imati poteškoća sa sastavljanjem više radnih knjiga i radnih listova prije nego što dođete do jednog konačnog podatka. Zamislite situaciju u kojoj morate kombinirati nekoliko stotina radnih bilježnica prije nego što uopće započnete svoj dan.
Nitko ne želi provoditi beskonačne sate radeći na različitim izvorima, otvarajući svaku radnu knjigu, kopirajući i lijepeći podatke s raznih listova, prije nego što konačno napravi jednu konsolidiranu radnu knjigu. Što ako VBA makronaredba to može učiniti umjesto vas?
Pomoću ovog vodiča možete stvoriti vlastiti Excel VBA makro kod za konsolidaciju više radnih knjiga, sve u nekoliko minuta (ako je datoteka s podacima puno).
Preduvjeti za stvaranje vlastitog VBA makro koda
Potrebna vam je jedna radna knjiga za smještaj VBA koda, dok su ostale radne knjige s izvornim podacima odvojene. Osim toga, izradite jednu radnu knjigu Konsolidirano za pohranu konsolidiranih podataka iz svih vaših radnih knjiga.
Stvorite mapu
Konsolidacija na željeno mjesto za pohranu svih izvornih radnih knjiga. Kada se makronaredba pokrene, prelazila bi kroz svaku radnu knjigu pohranjenu u ovoj mapi, kopirala sadržaj s različitih listova i smjestila je u Konsolidiranu radnu knjigu.Izrada vlastitog Excel VBA koda
Nakon što su preduvjeti nestali, vrijeme je da se udubite u kod i počnete hakirati osnove kako biste ga prilagodili svojim zahtjevima.
Povezano: Napredne značajke Microsoft Excela koje morate znati
pritisni Alt+F11 tipku na Excelu za otvaranje VBA uređivača makro koda. Zalijepite kod napisan u nastavku i spremite datoteku kao radnu knjigu s omogućenom makronaredbom (.xlsm proširenje).
Podotvorene datoteke()
'deklarirati varijable koje se koriste unutar VBA koda
Dim MyFolder kao string, MyFile kao string, wbmain kao radna knjiga, lastrow dokle god
'onemogućite ove funkcije kako biste poboljšali obradu koda
Uz aplikaciju
.DisplayAlerts = False
.Ažuriranje zaslona = Netočno
Završi s'promijenite put mape u koju će vaše datoteke biti spremljene
MyFolder = InputBox("Unesite put do mape za konsolidaciju") & "\"
'definirajte referencu mape u makro varijabli
Moja datoteka = Dir (Moja mapa)
'otvorite petlju za kruženje kroz svaku pojedinačnu radnu knjigu pohranjenu u mapi
Učini dok Len (Moja datoteka) > 0
'aktivirajte radnu knjigu Konsolidacije
Windows("Konsolidacija").Aktivirajte
'izračunaj zadnji popunjeni redak
Raspon("a1048576").Odaberi
Izbor. Kraj (xlUp).Odaberi
ActiveCell. Pomak (1, 0). Odaberite'otvorite prvu radnu knjigu unutar mape Konsolidacija
Radne bilježnice. Otvorite Ime datoteke:=Moja mapa & Moja datoteka
Windows (MyFile).Aktivirajte
'prolazite kroz svaki list unutar radnih knjiga da biste kopirali podatke
Dim ws As Worksheet
Za svaki ws u listovimaws. Aktivirati
ws. AutoFilterMode = False'ignorirajte zaglavlje i kopirajte podatke iz retka 2
Ako su ćelije (2, 1) = "" Onda idite na 1Idi na 10
1: Sljedeći
10: Raspon("a2:az20000").Kopiraj
Windows("Konsolidacija").Aktivirajte
'zalijepite kopirani sadržaj
ActiveSheet. Zalijepiti
Windows (MyFile).Aktivirajte
'zatvorite otvorenu radnu knjigu nakon što su podaci zalijepljeni
ActiveWorkbook. Zatvoriti
'ispraznite predmemoriju za pohranu vrijednosti sljedeće radne knjige
Moja datoteka = Dir()
'otvorite sljedeću datoteku u mapi
Petlja
'omogućite onemogućene funkcije za buduću upotrebu
Uz aplikaciju
.DisplayAlerts = Točno
.Ažuriranje zaslona = Točno
Završi s
Kraj Sub
Objašnjenje VBA koda
Prvi dio koda definira potprogram koji sadrži sav vaš VBA kod. Definirajte potprogram sa pod, nakon čega slijedi naziv koda. Podnaziv može biti bilo koji; idealno bi bilo da ime ostane relevantno za kod koji namjeravate napisati.
Povezano: Web-mjesta i blogovi za učenje Excel savjeta i trikova
Excel VBA razumije varijable koje su kreirali korisnici i njihove odgovarajuće tipove podataka deklarirane s dim (dimenzija).
Da biste poboljšali brzinu obrade koda, možete isključiti ažuriranje zaslona i potisnuti sva upozorenja jer to usporava izvršenje koda.
Od korisnika će se tražiti put do mape u kojoj su pohranjene datoteke s podacima. Petlja se stvara za otvaranje svake radne knjige pohranjene u mapi, kopiranje podataka sa svakog lista i dodavanje u Konsolidacija radna bilježnica.
Radna knjiga Konsolidacija je aktivirana tako da Excel VBA može izračunati zadnji popunjeni redak. Odabire se posljednja ćelija unutar radnog lista, a posljednji red se izračunava unutar radne knjige pomoću funkcije pomaka. Ovo je vrlo korisno kada makronaredba počne dodavati podatke iz izvornih datoteka.
Kako petlja otvara prvu izvornu datoteku, filtri se uklanjaju sa svakog pojedinog lista (ako su postoje), a podaci u rasponu od A2 do AZ20000 bit će kopirani i zalijepljeni u Konsolidaciju radna bilježnica.
Postupak se ponavlja sve dok se svi listovi radne knjige ne dodaju unutar glavne radne knjige.
Povezano: Najbolji online tečajevi za svladavanje naprednog Excela
Konačno, izvorna datoteka se zatvara kada se svi podaci zalijepe. Sljedeća radna knjiga se otvara tako da VBA makronaredba može ponoviti iste korake za sljedeći skup datoteka.
Petlja je kodirana za pokretanje dok se sve datoteke automatski ne ažuriraju u glavnoj radnoj knjizi.
Prilagodbe temeljene na korisniku
Ponekad se ne želite brinuti o ugrađenim upitima, pogotovo ako ste krajnji korisnik. Ako biste radije tvrdo kodirali put do mape za konsolidaciju u kodu, možete promijeniti ovaj dio koda:
MyFolder = InputBox("Unesite put do mape za konsolidaciju") & "\"
Do:
MyFolder = "Putanja mape" & "\"
Osim toga, možete promijeniti i reference stupaca, jer korak nije uključen u ovaj kod. Samo zamijenite referencu krajnjeg stupca s posljednjom popunjenom vrijednošću stupca (AZ, u ovom slučaju). Morate imati na umu da se zadnji popunjeni redak izračunava preko koda makronaredbe, tako da trebate promijeniti samo referencu stupca.
Da biste maksimalno iskoristili ovu makronaredbu, možete je koristiti samo za objedinjavanje radnih knjiga u istom formatu. Ako su strukture različite, ne možete koristiti ovu VBA makronaredbu.
Objedinjavanje više radnih knjiga pomoću Excel VBA makronaredbe
Stvaranje i izmjena Excel VBA koda relativno je jednostavno, pogotovo ako razumijete neke nijanse unutar koda. VBA sustavno prolazi kroz svaki redak koda i izvršava ga redak po redak.
Ako napravite bilo kakve promjene u kodu, morate osigurati da ne mijenjate redoslijed kodova, jer će to poremetiti izvršenje koda.
Učinite upravljanje podacima jednostavnim uz ove Excel makronaredbe.
Pročitajte dalje
- Programiranje
- Programiranje
- Microsoft Excel

Gaurav Siyal ima dvije godine iskustva pisanja, pisanja za niz tvrtki za digitalni marketing i dokumenata o životnom ciklusu softvera.
Pretplatite se na naše obavijesti
Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!
Kliknite ovdje za pretplatu