Konsolider/flet flere regneark til et hovedark ved hjælp af VBA

Anonim

Nogle gange ønsker vi at flette flere ark til et ark, så vi let kan analysere dataene og gøre dem til nogle nyttige oplysninger. Disse artikler fortæller dig, hvordan du fletter flere regneark til et regneark ved hjælp af VBA.
Eksempel:

Her har jeg hentet nogle data fra serveren, der returnerer data til forskellige regneark. Jeg har tilføjet endnu et ark og navngivet det som "Master". Andre arknavne er ligegyldige.
Kør nu denne 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ælg den Overskrifter ", Type: = 8) 'Kopier overskrifter til hovedoverskrifter. Kopier mtr.Range (" A1 ") startRow = headers.Row + 1 startCol = headers.Column Debug.Print startRow, startCol' loop gennem alle ark For hver ws I wb.Worksheets 'undtagen hovedarket fra looping Hvis ws.Name "Master" Så ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Cells (startRow, Columns.Count). Slut (xlToLeft) .Column 'hent data fra hvert regneark og kopier dem til Master sheet Range (Celler (startRow, startCol), Cells (lastRow, lastCol)). Kopier _ mtr.Range ("A" & mtr.Cells (Rækker .Tælling, 1). Afslut (xlUp) .Række + 1) Afslut Hvis Næste ws Worksheets ("Master"). Aktiver End Sub 

Hvordan flettes ark ved hjælp af denne VBA -makro?

  1. Indsæt et nyt ark, og navngiv det "Master" i projektmappen. Omdøb det senere, hvis du vil.
  2. Indsæt et modul i VBA -editoren, og kopier over VBA -koden.
  3. Kør makroen.
  4. Du bliver bedt om at vælge overskrifter. Vælg overskriften, og tryk på OK.

Og det er gjort. Alle arkene flettes sammen i master.

Hvordan det virker?
Jeg går ud fra, at du kender det grundlæggende ved objekt- og variabeloprettelse i VBA. i den første del har vi skabt objekt og variabler, som vi får brug for i vores operationer.

De fleste af de ting, jeg har forklaret ved hjælp af kommentarer i vba -kode. Lad os se på hoveddelen af ​​denne vba -kode.

For hver ws I wb.Worksheets 'undtagen master -arket fra looping Hvis ws.Name "Master" Så ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Cells (startRow, Columns. Count). End (xlToLeft) .Column 'hent data fra hvert regneark og kopier dem til Master sheet Range (Celler (startRow, startCol), Cells (lastRow, lastCol)). Kopier _ mtr.Range ("A" & mtr. Celler (rækker.Tælling, 1). Afslut (xlUp) .Række + 1) Afslut hvis næste ws

I tidligere artikler lærte vi, hvordan man bladrer gennem ark, og hvordan man får sidste række og kolonne ved hjælp af vba.

Her går vi igennem hvert ark i hovedarbejdsbogen ved hjælp af loop.
For hver ws i wb.Worksheets

Derefter ekskluderer vi "master" -ark fra looping, da vi vil konsolidere vores data i dette ark.

Så får vi sidste række og sidste kolonnenummer.

Nu er næste linje meget vigtig. Vi har udført flere operationer i en linje.
Range (Celler (startRow, startCol), Cells (lastRow, lastCol)). Copy _
mtr.Range ("A" & mtr.Cells (Rows.Count, 1). End (xlUp) .Row + 1)

Først danner vi et område ved hjælp af startRow, startCol og lastRow og lastCol.

Range (Cells (startRow, startCol), Cells (lastRow, lastCol)) Vi har kopieret det ved hjælp af kopimetoden for område. Område (Celler (startRow, startCol), Celler (lastRow, lastCol)). Kopi Vi indsatte det direkte i den første tomme celle efter den sidste ikke -tomme celle i kolonne A i hovedarket (mtr.Cells (Rows.Count, 1). End (xlUp). Række + 1). Område (Celler (startRække, startCol), Celler (sidste række, sidste kol)). Kopier _ mtr.Range ("A" & mtr.Celler (rækker, tælling, 1). Afslut (xlUp) .Række + 1)

Denne sløjfer kører for alle arkene og kopierer hver arkdata til hovedark.

Endelig aktiverer vi i slutningen af ​​makroen mastersheet for at se output.

Så ja fyre, sådan kan du flette hvert ark i en projektmappe. Lad mig vide, hvis du har spørgsmål til denne VBA -kode eller et Excel -emne i kommentarfeltet herunder.
Download fil:

Consolidate_Merge multiple regneark til ét hovedark ved hjælp af VBA

Relaterede artikler:

Sådan går du gennem ark

hvordan man får sidste række og kolonne ved hjælp af vba

Slet ark uden bekræftelsesmeddelelser ved hjælp af VBA i Microsoft Excel

Tilføj og gem ny arbejdsmappe ved hjælp af VBA i Microsoft Excel 2016

Vis en meddelelse på Excel VBA -statuslinjen

Slå advarselsmeddelelser fra ved hjælp af VBA i Microsoft Excel 2016

Populære artikler:

VLOOKUP -funktionen i Excel

COUNTIF i Excel 2016

Sådan bruges SUMIF -funktionen i Excel