Excel VBA är en integrerad del av Excel-automatisering, och VBA: s användning och fördelar kan inte undergrävas. Om du är i en uppförsbacke och försöker konsolidera flera ark och arbetsböcker i Excel, är vi här för att hjälpa dig.

Makron som nämns i den här guiden hjälper dig att uppnå den till synes oöverstigliga uppgiften på några sekunder (eller minuter, om datatillgångarna är stora).

Genom att följa den här handledningen skapar du ditt eget VBA-makro i Excel och slår samman flera ark effektivt till en enda fil.

Slå ihop flera Excel-ark till en fil

För denna uppgift lagras data i följande ark:

  • Blad 1
  • Blad 2
  • Blad 3

Bladnamnen som anges ovan är endast för illustrationsändamål. Detta VBA-makro är generiskt och beror inte på arknamnen; du kan anpassa koden för att använda den med valfritt arknamn.

Förutsättningar för att köra koden

Det finns några förutsättningar för att köra VBA-koden nedan.

Du måste lagra makrokoden i en ny Excel-fil. Spara denna arbetsbok med en .xlsm förlängning. Du kan spara VBA-makroarbetsboken med vilket namn som helst.

instagram viewer

Öppna en ny Excel-fil; Tryck Alt + F11 på tangentbordet för att öppna Excel VBA-redigeraren. När redigeraren öppnas lägger du till en ny kodmodul genom att klicka på Föra in fliken överst. Välj Modul för att infoga en ny modul; det är här du kommer att ange VBA-makrokoden nedan.

Databladen som ska konsolideras bör vara i en annan separat arbetsbok helt och hållet. Namnet på arbetsboken och arken kan vara vad du än väljer.

Så fort du kör VBA-koden kommer VBA-makrot att gå igenom varje tillgängligt kalkylblad i primär arbetsbok (dataarbetsbok) och klistra in innehållet i ett nyligen tillagt ark inom densamma arbetsbok.

De konsoliderade uppgifterna kommer att finnas tillgängliga i det angivna bladet Konsoliderat.

Kör VBA-koden

Det är dags att köra den nyligen sparade makrokoden. Kopiera-klistra in den här koden i VBA-redigerarens modul:

Sub consolide_shts()
'deklarera de olika variablerna som används i koden och vba-datatyperna
Dim sht As Worksheet, sht1 As Worksheet, lastrow As Integer, lastrow1 As Integer
'inaktivera skärmflimmer och varningspopup-fönster under körningen
Med applikation
.ScreenUpdating = Falskt
.DisplayAlerts = False
Sluta med
'lagra namnet på den primära arbetsboken i en makrovariabel. Ersätt Test.xlsx med namnet på din primära arbetsbok
Ställ in wbk1 = Workbooks("Test.xlsx")
'aktivera arbetsboken innan du utför funktionen/funktionerna på den
wbk1.Aktivera
'kör en vba for loop för att kontrollera om ett ark Consolidated redan finns. Om den finns kommer for-slingan att ta bort den.
För varje sht I wbk1.Sheets
Om sht. Namn = "Konsoliderat" Sedan sht. Radera
Nästa shit
'Lägg till ett nytt ark för att lagra ny konsoliderad data
Arbetsblad. Lägg till. Namn = "Konsoliderat"
'Lägg till några rubriker till varje enskild kolumn i det konsoliderade arket
With Sheets ("Konsoliderat")
.Range("a1").Value = "OrderDate"
.Range("b1").Value = "Region"
.Range("c1").Value = "Rep"
.Range("d1").Value = "Artikel"
.Range("e1").Value = "Enheter"
.Range("f1").Value = "UnitCost"
.Range("g1").Value = "Totalt"

Sluta med
"Det nyskapade konsoliderade arket kommer att innehålla konsoliderade data från varje enskilt ark i den primära arbetsboken

För i = 1 Till wbk1.Worksheets. Räkna
Om Ark (i). Namn <> "Konsoliderat" Då
'Fånga den senast ifyllda raden från databladen i arbetsboken
lastrow = Sheets (i).Range("a1").End (xlDown).Row
'Fånga den senast ifyllda raden i det konsoliderade arket
lastrow1 = wbk1.Sheets("Consolidated").Range("a1048576").End (xlUp).Row + 1

'Kopiera data från källarket och klistra in det i det konsoliderade bladet
Sheets (i).Range("a2:g" & lastrow).Copy Destination:=Sheets("Consolidated").Range("a" & lastrow1)
Avsluta om
Nästa i
'Aktivera Excel VBA-funktioner för framtida användning
Med applikation
.ScreenUpdating = Sant
.DisplayAlerts = Sant
Sluta med

Avsluta Sub

VBA-koden förklaras

Först, deklarera alla variabler du använder i koden och tilldela dem de korrekta VBA-datatyperna för att få koden att köras sömlöst.

När du väl har deklarerat variablerna behövs lite grundläggande hushållning. Detta görs genom att inaktivera skärmflimmer och undertrycka popup-varningar. Till exempel, när du tar bort ett befintligt ark med VBA-koden, frågar en uppmaning i Excel om bekräftelse innan du tar bort arket. Uppmaningar som denna undertrycks för att öka körningshastigheten.

I nästa steg måste du definiera arbetsbokens namn, som innehåller alla dina data. Byta ut Test.xlsx med namnet och förlängningen av ditt arbetsboksnamn. Se till att du omger namnet med citattecken.

Aktivera den primära arbetsboken och ta bort befintliga ark med namnet Konsoliderat för att eliminera tidigare lagrad data. VBA-koden växlar genom varje ark, och så snart den stöter på arknamnet Konsoliderat det kommer att radera det. Detta görs med hjälp av VBA IF uttalande, som söker efter logiska villkor och tar bort arket så snart villkoret är uppfyllt.

Ett nytt ark läggs till i den primära arbetsboken för att lagra de konsoliderade data. Därefter läggs förformaterade, standardiserade rubriker till på detta ark. Du kan ändra värdena på titlarna (kolumnrubriker) genom att uppdatera informationen bredvid cellreferenserna inom citattecken.

Till exempel: .Range(“a1”) = “OrderDate” kan ersättas med .Range(“a1”) = “Ordernummer”

Därefter växlar en VBA FOR-loop genom varje kalkylblad, kopierar arkets innehåll och klistrar in innehållet i Konsoliderat kalkylblad innan du går till nästa blad i arbetsboken. Denna process upprepas tills alla ark har kopierats över.

Under denna process beräknas alla rader automatiskt och klistras in i det konsoliderade arket. Den senast ifyllda raden beräknas automatiskt innan data klistras in. Makrot är dynamiskt och kan anpassas till olika datarader inom varje kalkylblad.

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

När data från alla ark har klistrats in i huvudkonsolideringsarket flyttas makrot till den sista delen av koden. VBA-funktionerna som ursprungligen inaktiverades aktiveras igen för framtida användning.

Konsolidera flera ark med Excel VBA-makro

Excel VBA är ett överflödigt programmeringsspråk, som fungerar bra med alla Excel-komponenter. Varje del av kod är viktig, och det är viktigt att komma ihåg att exekveringen är beroende av ett rad-för-rad-exekveringssystem, så du bör inte ändra ordningen på kodraderna.

För att anpassa koden för dina krav kan du göra de nödvändiga ändringarna och köra den här koden för att konsolidera data effektivt och effektivt på några sekunder.

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
  • Microsoft excel
  • Makron
  • Programmering
Om författaren
Gaurav Siyal (21 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