Ko delate z različnimi viri podatkov, boste morda imeli težave pri sestavljanju več delovnih zvezkov in delovnih listov, preden pridete do enega končnega podatka. Predstavljajte si situacijo, ko morate združiti nekaj sto delovnih zvezkov, preden lahko sploh začnete svoj dan.

Nihče ne želi preživeti neskončnih ur dela na različnih virih, odpiranja vsakega delovnega zvezka, kopiranja in lepljenja podatkov z različnih listov, preden končno naredi en združen delovni zvezek. Kaj pa, če lahko makro VBA to naredi namesto vas?

S tem vodnikom lahko ustvarite svojo makro kodo Excel VBA za združitev več delovnih zvezkov, vse v nekaj minutah (če je podatkovnih datotek veliko).

Predpogoji za ustvarjanje lastne makro kode VBA

Za shranjevanje kode VBA potrebujete en delovni zvezek, medtem ko so ostali delovni zvezki z izvornimi podatki ločeni. Poleg tega ustvarite en delovni zvezek Konsolidirano za shranjevanje konsolidiranih podatkov iz vseh vaših delovnih zvezkov.

Ustvarite mapo Konsolidacija na želeno lokacijo za shranjevanje vseh izvornih delovnih zvezkov. Ko se makro zažene, bi preklapljal po vsakem delovnem zvezku, shranjenem v tej mapi, kopiral vsebino z različnih listov in jo postavil v konsolidirani delovni zvezek.

Ustvarjanje lastne Excelove kode VBA

Ko izginejo predpogoji, je čas, da se poglobite v kodo in začnete vdirati v osnove, da jo prilagodite svojim zahtevam.

Povezano: Napredne funkcije Microsoft Excela, ki jih morate poznati

Pritisnite na Alt + F11 tipko v Excelu, da odprete urejevalnik makro kode VBA. Prilepite kodo, napisano spodaj, in shranite datoteko kot delovni zvezek z omogočenimi makri (.xlsm razširitev).

Pododprte datoteke()

'razglasite spremenljivke, uporabljene v kodi VBA

Dim MyFolder kot niz, MyFile kot niz, wbmain kot delovni zvezek, zadnji kot dolg

'onemogočite te funkcije, da izboljšate obdelavo kode

Z aplikacijo
.DisplayAlerts = False
.ScreenUpdating = False
Končaj z

'spremenite pot do mape, kamor bodo vaše datoteke shranjene

MyFolder = InputBox("Vnesite pot konsolidacijske mape") & "\"

'določite referenco mape v spremenljivki makra

Moja datoteka = Dir (Moja mapa)

'odprite zanko za kroženje po vsakem posameznem delovnem zvezku, shranjenem v mapi

Naredi, medtem ko Len (Moja datoteka) > 0

'aktivirajte delovni zvezek Konsolidacija

Windows ("Konsolidacija"). Aktivirajte

'izračunaj zadnjo poseljeno vrstico

Obseg("a1048576").Izberi
Izbor. Konec (xlUp).Izberi
ActiveCell. Odmik (1, 0).Izberite

'odprite prvi delovni zvezek v mapi Konsolidacija

Delovni zvezki. Odprite Filename:=MyFolder & MyFile

Windows (Moja datoteka). Aktivirajte

'preklapljajte po vsakem listu v delovnih zvezkih, da kopirate podatke

Dim ws As Worksheet
Za vsako ws In Sheets

ws. Aktiviraj
ws. AutoFilterMode = False

"prezrite glavo in kopirajte podatke iz vrstice 2
Če so celice (2, 1) = "" Potem Pojdi na 1

Pojdi na 10

1: Naprej

10: Obseg("a2:az20000").Kopiraj

Windows ("Konsolidacija"). Aktivirajte

'prilepite kopirano vsebino

ActiveSheet. Prilepite

Windows (Moja datoteka). Aktivirajte

"zaprite odprt delovni zvezek, ko so podatki prilepljeni

ActiveWorkbook. Zapri

'izpraznite predpomnilnik, da shranite vrednost naslednjega delovnega zvezka

Moja datoteka = Dir()

'odprite naslednjo datoteko v mapi

Zanka

'omogoči onemogočene funkcije za nadaljnjo uporabo

Z aplikacijo
.DisplayAlerts = Res
.ScreenUpdating = Res
Končaj z

Končni sub

Razložena koda VBA

Prvi del kode definira podprogram, ki vsebuje vso vašo kodo VBA. Definirajte podprogram s sub, ki mu sledi ime kode. Podime je lahko kar koli; v idealnem primeru bi morali ohraniti ime, ki ustreza kodi, ki jo nameravate napisati.

Povezano: Spletna mesta in blogi za učenje Excelovih nasvetov in trikov

Excel VBA razume spremenljivke, ki jih ustvarijo uporabniki, in njihove ustrezne vrste podatkov, deklarirane s dim (dimenzija).

Če želite povečati hitrost obdelave kode, lahko izklopite posodabljanje zaslona in onemogočite vsa opozorila, saj to upočasni izvajanje kode.

Uporabnik bo pozvan k poti do mape, v kateri so shranjene podatkovne datoteke. Ustvarjena je zanka, da odprete vsak delovni zvezek, shranjen v mapi, kopirate podatke z vsakega lista in jih pripnete v Konsolidacija delovni zvezek.

Delovni zvezek Konsolidacija je aktiviran, tako da lahko Excel VBA izračuna zadnjo poseljeno vrstico. Izbrana je zadnja celica na delovnem listu, zadnja vrstica pa se izračuna znotraj delovnega zvezka s funkcijo odmika. To je zelo uporabno, ko makro začne dodajati podatke iz izvornih datotek.

Ko zanka odpre prvo izvorno datoteko, se filtri odstranijo z vsakega posameznega lista (če so obstajajo), podatki v razponu od A2 do AZ20000 pa bodo kopirani in prilepljeni v konsolidacijo delovni zvezek.

Postopek se ponavlja, dokler niso vsi listi delovnega zvezka dodani v glavni delovni zvezek.

Povezano: Najboljši spletni tečaji za obvladovanje naprednega Excela

Končno se izvorna datoteka zapre, ko so vsi podatki prilepljeni. Odpre se naslednji delovni zvezek, tako da lahko makro VBA ponovi iste korake za naslednji niz datotek.

Zanka je kodirana za izvajanje, dokler se vse datoteke samodejno ne posodobijo v glavnem delovnem zvezku.

Uporabniške prilagoditve

Včasih ne želite skrbeti za vgrajene pozive, še posebej, če ste končni uporabnik. Če bi raje trdo kodirali pot do mape za konsolidacijo v kodi, lahko spremenite ta del kode:

MyFolder = InputBox("Vnesite pot konsolidacijske mape") & "\"

Za:

MyFolder = "Pot mape" & "\"

Poleg tega lahko spremenite tudi reference stolpcev, saj korak ni vključen v to kodo. Preprosto zamenjajte sklic na končni stolpec z zadnjo napolnjeno vrednostjo stolpca (v tem primeru AZ). Ne pozabite, da se zadnja zapolnjena vrstica izračuna s kodo makra, zato morate spremeniti samo referenco stolpca.

Če želite kar najbolje izkoristiti ta makro, ga lahko uporabite samo za združevanje delovnih zvezkov v isti obliki. Če so strukture drugačne, tega makra VBA ne morete uporabiti.

Združevanje več delovnih zvezkov z uporabo makra Excel VBA

Ustvarjanje in spreminjanje kode Excel VBA je razmeroma enostavno, še posebej, če razumete nekatere nianse v kodi. VBA sistematično teče skozi vsako vrstico kode in jo izvaja vrstico za vrstico.

Če spremenite kodo, morate zagotoviti, da ne spremenite vrstnega reda kod, saj bo to motilo izvajanje kode.

5 kul makrov Microsoft Excel za razvrščanje podatkov

Poenostavite upravljanje podatkov s temi Excelovimi makri.

Preberite Naprej

DelitiTweetE-naslov
Povezane teme
  • Programiranje
  • Programiranje
  • Microsoft Excel
O avtorju
Gaurav Siyal (Objavljenih 19 člankov)

Gaurav Siyal ima dve leti izkušenj s pisanjem, pisanjem za vrsto podjetij za digitalni marketing in dokumente o življenjskem ciklu programske opreme.

Več od Gaurav Siyal

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e-knjige in ekskluzivne ponudbe!

Kliknite tukaj, da se naročite