Konsolidera/slå ihop flera kalkylblad till ett huvudark med VBA

Anonim

Ibland vill vi slå samman flera ark till ett ark så att vi enkelt kan analysera data och göra det till användbar information. Denna artikel kommer att berätta hur du slår ihop flera kalkylblad till ett kalkylblad med VBA.
Exempel:

Här har jag hämtat lite data från servern som returnerar data till olika kalkylblad. Jag har lagt till ytterligare ett blad och kallat det "Master". Andra bladnamn spelar ingen roll.
Kör nu detta makro.

Sub Merge_Sheets () Dim startRow, startCol, lastRow, lastCol As Long Dim headers As Range 'Set Master sheet for consolidation Set mtr = Worksheets ("Master") Set wb = ThisWorkbook' Get Headers Set headers = Application.InputBox ("Välj den Rubriker ", Typ: = 8) 'Kopiera rubriker till huvudrubriker. Kopiera mtr.Range (" A1 ") startRow = headers.Row + 1 startCol = headers.Column Debug.Print startRow, startCol' loop genom alla blad för varje ws I wb.Worksheets 'utom huvudarket från looping If ws.Name "Master" Sedan ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Cells (startRow, Columns.Count). Avsluta (xlToLeft) .Column 'hämta data från varje kalkylblad och kopiera dem till huvudarkintervall (Cells (startRow, startCol), Cells (lastRow, lastCol)). Kopiera _ mtr.Range ("A" & mtr.Cells (rader .Count, 1) .End (xlUp) .Rad + 1) Avsluta om nästa ws Worksheets ("Master"). Aktivera End Sub 

Hur slår man ihop blad med detta VBA -makro?

  1. Sätt i ett nytt blad och namnge det "Master" i arbetsboken. Byt namn senare om du vill.
  2. Sätt in en modul i VBA -redigeraren och kopiera ovanför VBA -koden.
  3. Kör makrot.
  4. Du kommer att bli ombedd att välja rubriker. Välj rubriken och tryck OK.

Och det är gjort. Alla blad sammanfogas i master.

Hur det fungerar?
Jag antar att du känner till grunderna för objekt och skapande av variabler i VBA. i den första delen har vi skapat objekt och variabler som vi kommer att behöva i vår verksamhet.

De flesta saker jag har förklarat med kommentarer i vba -kod. Låt oss titta på huvuddelen av denna vba -kod.

För varje ws i wb.Worksheets 'utom huvudarket från looping If ws.Name "Master" Sedan ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Cells (startRow, Columns. Räkna) .Slut (xlToLeft) .Column 'hämta data från varje kalkylblad och kopiera det till huvudarkintervall (Cells (startRow, startCol), Cells (lastRow, lastCol)). Kopiera _ mtr.Range ("A" & mtr. Celler (rader.räkning, 1) .Slut (xlUp) .Rad + 1) Avsluta om nästa ws

I tidigare artiklar lärde vi oss att bläddra igenom blad och hur man får sista raden och kolumnen med hjälp av vba.

Här går vi igenom varje blad i huvudarboken med hjälp av loop.
För varje ws i wb.Worksheets

Sedan utesluter vi "huvud" -ark från looping, eftersom vi kommer att konsolidera våra data i det bladet.

Då får vi sista raden och sista kolumnnumret.

Nu är nästa rad väldigt viktig. Vi har gjort flera operationer på en rad.
Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copy _
mtr.Range ("A" & mtr.Cells (Rows.Count, 1) .End (xlUp) .Rad + 1)

Först bildar vi ett intervall med startRow, startCol och lastRow och lastCol.

Range (Cells (startRow, startCol), Cells (lastRow, lastCol)) We have copied it using copy method of range. Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copy Vi klistrade in den direkt i den första tomma cellen efter den sista icke -tomma cellen i kolumn A i huvudarket (mtr.Cells (Rows.Count, 1) .End (xlUp). rad + 1). Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copy _ mtr.Range ("A" & mtr.Cells (Rows.Count, 1). End (xlUp) .Row + 1)

Denna loop fungerar för alla ark och kopierar varje arkdata till huvudark.

Slutligen, i slutet av makrot aktiverar vi huvudarket för att se utdata.

Så ja killar, så här kan du slå samman varje blad i en arbetsbok. Låt mig veta om du har några frågor angående denna VBA -kod eller något Excel -ämne i kommentarfältet nedan.
Nedladdning fil:

Consolidate_Merge flera kalkylblad till ett huvudark med VBA

Relaterade artiklar:

Hur man går igenom ark

hur man får sista raden och kolumnen med hjälp av vba

Ta bort blad utan bekräftelsefrågor med VBA i Microsoft Excel

Lägg till och spara ny arbetsbok med VBA i Microsoft Excel 2016

Visa ett meddelande i Excel VBA -statusfältet

Stäng av varningsmeddelanden med VBA i Microsoft Excel 2016

Populära artiklar:

VLOOKUP -funktionen i Excel

COUNTIF i Excel 2016

Hur man använder SUMIF -funktionen i Excel