Konsolidujte/zlúčte viac pracovných hárkov do jedného hlavného hárka pomocou VBA

Anonim

Niekedy chceme zlúčiť viacero hárkov do jedného listu, aby sme mohli údaje jednoducho analyzovať a premeniť na užitočné informácie. Tento článok vám povie, ako zlúčiť viac pracovných hárkov do jedného pracovného hárka pomocou jazyka VBA.
Príklad:

Tu som načítal niektoré údaje zo servera, ktorý vracia údaje do rôznych pracovných hárkov. Pridal som ešte jeden list a pomenoval som ho ako „hlavný“. Na iných názvoch listov nezáleží.
Teraz spustite toto makro.

Sub Merge_Sheets () Dim startRow, startCol, lastRow, lastCol As Long Dim headers As Range 'Set Master sheet forsolidation Set mtr = Worksheets ("Master") Set wb = ThisWorkbook' Get Headers Set headers = Application.InputBox ("Select the Headers ", Type: = 8) 'Copy Headers into master headers.Copy mtr.Range (" A1 ") startRow = headers.Row + 1 startCol = headers.Column Debug.Print startRow, startCol' loop through all sheets For every ws Vo wb.Worksheete okrem hlavného hárku zo slučky Ak ws.Name "Master" Potom ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Cells (startRow, Columns.Count). Koniec (xlToLeft). Stĺpec získa údaje z každého pracovného hárka a skopíruje ich do rozsahu hlavného hárka (bunky (startRow, startCol), bunky (lastRow, lastCol)). Skopírujte _ mtr.Range ("A" & mtr.Cells (riadky) .Count, 1). End (xlUp). Row + 1) End If Next ws worksheets ("Master"). Activate End Sub 

Ako zlúčiť hárky pomocou tohto makra VBA?

  1. Vložte nový list a v zošite ho pomenujte „Hlavný“. Ak chcete, premenujte ho neskôr.
  2. Vložte modul do editora VBA a skopírujte ho nad kód VBA.
  3. Spustite makro.
  4. Zobrazí sa výzva na výber nadpisov. Vyberte nadpis a kliknite na tlačidlo OK.

A je hotovo. Všetky listy sú zlúčené do predlohy.

Ako to funguje?
Predpokladám, že poznáte základy tvorby objektov a premenných vo VBA. v prvej časti sme vytvorili objekt a premenné, ktoré budeme pri svojich operáciách potrebovať.

Väčšina vecí, ktoré som vysvetlil pomocou komentárov v kóde VBA. Pozrime sa na hlavnú časť tohto kódu vba.

Pre každé ws V wb.Worksheets okrem hlavného listu zo slučky Ak ws.Name "Master" Potom ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Cells (startRow, Columns. Count). End (xlToLeft). Column 'get data from each worksheet and copy it into Master sheet Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copy _ mtr.Range ("A" & mtr. Bunky (riadky. Počet, 1). Koniec (xlUp). Riadok + 1) koniec, ak ďalej w

V predchádzajúcich článkoch sme sa naučili, ako prechádzať listami a ako získať posledný riadok a stĺpec pomocou vba.

Tu prechádzame každým listom v hlavnom zošite pomocou cyklu for.
Za každú ws vo wb. Pracovné listy

Potom vylúčime „hlavný“ list zo slučiek, pretože v ňom budeme konsolidovať naše údaje.

Potom dostaneme posledný riadok a posledné číslo stĺpca.

Teraz je ďalší riadok veľmi dôležitý. Vykonali sme viac operácií do jedného riadku.
Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copy _
mtr.Range ("A" & mtr.Cells (riadky.počet, 1). Koniec (xlUp). riadok + 1)

Najprv vytvoríme rad pomocou startRow, startCol a lastRow a lastCol.

Range (Cells (startRow, startCol), Cells (lastRow, lastCol)) Skopírovali sme ho pomocou metódy kopírovania rozsahu. Rozsah (Bunky (startRow, startCol), Bunky (lastRow, lastCol)). Kópia Vložili sme ju priamo do prvej prázdnej bunky za poslednú prázdnu bunku v stĺpci A predlohy (mtr.Cells (Rows.Count, 1). End (xlUp). Riadok + 1). Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copy _ mtr.Range ("A" & mtr.Cells (Rows.Count, 1). End (xlUp) .Row + 1)

Táto slučka sa spustí pre všetky listy a skopíruje údaje každého listu do hlavného listu.

Nakoniec na konci makra aktivujeme predlohu, aby sme videli výstup.

Takže áno, chlapci, takto môžete zlúčiť každý list v zošite. Dajte mi vedieť, ak máte akékoľvek otázky týkajúce sa tohto kódu VBA alebo akejkoľvek témy programu Excel v sekcii komentárov nižšie.
Stiahnuť súbor:

Konsolidujte_zlúčte viac pracovných hárkov do jedného hlavného hárka pomocou VBA

Súvisiace články:

Ako prechádzať listami

ako získať posledný riadok a stĺpec pomocou vba

Odstráňte hárky bez výziev na potvrdenie pomocou VBA v programe Microsoft Excel

Pridajte a uložte nový zošit pomocou jazyka VBA v programe Microsoft Excel 2016

Zobrazte správu na stavovom riadku programu Excel VBA

Vypnite varovné správy pomocou VBA v programe Microsoft Excel 2016

Populárne články:

Funkcia VLOOKUP v programe Excel

COUNTIF v Exceli 2016

Ako používať funkciu SUMIF v programe Excel