När du arbetar med olika datakällor kan du ofta kämpa för att kompilera flera arbetsböcker och kalkylblad innan du kommer fram till en sista databit. Föreställ dig en situation där du har några hundra arbetsböcker att kombinera innan du ens kan börja din dag.

Ingen vill tillbringa oändliga timmar med att arbeta på olika källor, öppna varje arbetsbok, kopiera och klistra in data från olika ark, innan du slutligen gör en konsoliderad arbetsbok. Vad händer om ett VBA-makro kan göra detta åt dig?

Med den här guiden kan du skapa din egen Excel VBA-makrokod för att konsolidera flera arbetsböcker, allt på några minuter (om datafilerna är många).

Förutsättningar för att skapa din egen VBA-makrokod

Du behöver en arbetsbok för att innehålla VBA-koden, medan resten av källdataarbetsböckerna är separata. Skapa dessutom en arbetsbok Konsoliderat för att lagra den konsoliderade data från alla dina arbetsböcker.

Skapa en mapp Konsolidering på din föredragna plats för att lagra alla dina källarbetsböcker. När makrot körs, växlar det genom varje arbetsbok som är lagrad i den här mappen, kopierar innehållet från olika ark och placerar det i den konsoliderade arbetsboken.

instagram viewer

Skapa din egen Excel VBA-kod

När förutsättningarna är ur vägen är det dags att fördjupa sig i koden och börja hacka på grunderna för att anpassa den till dina krav.

Relaterad: Avancerade Microsoft Excel-funktioner du måste känna till

tryck på Alt+F11 tangenten på Excel för att öppna VBA-makrokodredigeraren. Klistra in koden nedan och spara filen som en makroaktiverad arbetsbok (.xlsm förlängning).

Sub openfiles()

'deklarera de variabler som används i VBA-koden

Dim MyFolder As String, MyFile As String, wbmain As Workbook, lastrow As Long

'avaktivera dessa funktioner för att förbättra kodbehandlingen

Med applikation
.DisplayAlerts = False
.ScreenUpdating = Falskt
Sluta med

'ändra sökvägen till mappen där dina filer ska sparas

MyFolder = InputBox("Ange sökvägen till konsolideringsmappen") & "\"

'definiera referensen för mappen i en makrovariabel

MyFile = Dir (MyFolder)

'öppna en slinga för att bläddra igenom varje enskild arbetsbok som finns lagrad i mappen

Gör medan Len (MyFile) > 0

'aktivera Consolidation-arbetsboken

Windows ("Konsolidering"). Aktivera

'beräkna den senast fyllda raden

Range("a1048576"). Välj
Urval. Slut (xlUp). Välj
ActiveCell. Offset (1, 0). Välj

Öppna den första arbetsboken i konsolideringsmappen

Arbetsböcker. Öppna Filename:=MyFolder & MyFile

Windows (MyFile).Aktivera

'gå igenom varje ark i arbetsböckerna för att kopiera data

Dim ws As Arbetsblad
För varje är i ark

ws. Aktivera
ws. AutoFilterMode = False

"ignorera rubriken och kopiera data från rad 2
Om celler (2, 1) = "" Gå till 1

Gå till 10

1: Nästa

10: Range("a2:az20000"). Kopiera

Windows ("Konsolidering"). Aktivera

'klistra in det kopierade innehållet

ActiveSheet. Klistra

Windows (MyFile).Aktivera

'Stäng den öppna arbetsboken när data har klistrats in

ActiveWorkbook. Stänga

'töm cacheminnet för att lagra värdet på nästa arbetsbok

MyFile = Dir()

'öppna nästa fil i mappen

Slinga

'aktivera de inaktiverade funktionerna för framtida användning

Med applikation
.DisplayAlerts = Sant
.ScreenUpdating = Sant
Sluta med

Avsluta Sub

VBA-koden förklaras

Den första delen av koden definierar en subrutin som innehåller all din VBA-kod. Definiera subrutinen med sub, följt av kodens namn. Undernamnet kan vara vad som helst; helst bör du behålla ett namn som är relevant för koden du ska skriva.

Relaterad: Webbplatser och bloggar för att lära dig Excel-tips och tricks

Excel VBA förstår användarskapade variabler och deras motsvarande datatyper som deklareras med dämpa (dimensionera).

För att öka bearbetningshastigheten för din kod kan du stänga av skärmuppdateringen och undertrycka alla varningar, eftersom det saktar ner kodexekveringen.

Användaren kommer att bli tillfrågad om sökvägen till mappen där datafilerna lagras. En slinga skapas för att öppna varje arbetsbok som är lagrad i mappen, kopiera data från varje ark och lägga till den i Konsolidering arbetsbok.

Arbetsboken Konsolidering aktiveras så att Excel VBA kan beräkna den senast ifyllda raden. Den sista cellen i kalkylbladet väljs och den sista raden beräknas i arbetsboken med hjälp av offsetfunktionen. Detta är mycket användbart när makrot börjar lägga till data från källfilerna.

När loopen öppnar den första källfilen tas filtren bort från varje enskilt ark (om de existerar), och data från A2 till AZ20000 kommer att kopieras och klistras in i konsolideringen arbetsbok.

Processen upprepas tills alla arbetsboksblad har lagts till i huvudarbetsboken.

Relaterad: De bästa onlinekurserna för att behärska avancerad Excel

Slutligen stängs källfilen när all data har klistrats in. Nästa arbetsbok öppnas så att VBA-makrot kan upprepa samma steg för nästa uppsättning filer.

Slingan är kodad för att köras tills alla filer automatiskt uppdateras i huvudarbetsboken.

Användarbaserade anpassningar

Ibland vill du inte oroa dig för inbyggda uppmaningar, särskilt om du är slutanvändaren. Om du hellre vill hårdkoda sökvägen till konsolideringsmappen i koden kan du ändra den här delen av koden:

MyFolder = InputBox("Ange sökvägen till konsolideringsmappen") & "\"

Till:

MyFolder = "Mappsökväg" & "\"

Dessutom kan du också ändra kolumnreferenserna, eftersom steget inte ingår i denna kod. Ersätt bara slutkolumnreferensen med ditt senast ifyllda kolumnvärde (A-Ö, i det här fallet). Du måste komma ihåg att den senast ifyllda raden beräknas via makrokoden, så du behöver bara ändra kolumnreferensen.

För att få ut det mesta av detta makro kan du bara använda det för att konsolidera arbetsböcker i samma format. Om strukturerna är olika kan du inte använda detta VBA-makro.

Konsolidera flera arbetsböcker med Excel VBA-makro

Att skapa och ändra en Excel VBA-kod är relativt enkelt, speciellt om du förstår några av nyanserna i koden. VBA går systematiskt igenom varje kodrad och exekverar den rad för rad.

Om du gör några ändringar i koden måste du se till att du inte ändrar ordningen på koderna, eftersom det kommer att störa kodens exekvering.

5 coola Microsoft Excel-makron för att sortera data

Gör datahantering till en lek med dessa Excel-makron.

Läs Nästa

Dela med sigTweetE-post
Relaterade ämnen
  • Programmering
  • Programmering
  • Microsoft excel
Om författaren
Gaurav Siyal (19 publicerade artiklar)

Gaurav Siyal har två års erfarenhet av att skriva, skriva för en rad digitala marknadsföringsföretag och programvarulivscykeldokument.

Mer från Gaurav Siyal

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Klicka här för att prenumerera