Objedinite/spojite više radnih listova u jedan glavni list pomoću VBA

Anonim

Ponekad želimo spojiti više listova u jedan list kako bismo mogli lako analizirati podatke i pretvoriti ih u neke korisne informacije. Ovi će vam članci reći kako spojiti više radnih listova u jedan radni list pomoću VBA.
Primjer:

Ovdje sam dohvatio neke podatke s poslužitelja koji vraća podatke u različite radne listove. Dodao sam još jedan list i nazvao ga “Master”. Drugi nazivi listova nisu bitni.
Sada pokrenite ovu makronaredbu.

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 ("Odaberite Headers ", Type: = 8) 'Copy Headers into master headers.Copy mtr.Range (" A1 ") startRow = headers.Row + 1 startCol = headers.Column Debug.Print startRow, startCol' petlja kroz sve listove Za svaki ws U wb.Worksheets 'osim glavnog lista iz petlje Ako ws.Name "Master" Zatim 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.Cells (Rows .Count, 1) .End (xlUp) .Row + 1) End If Next ws Worksheets ("Master"). Activate End Sub 

Kako spojiti listove pomoću ove VBA makronaredbe?

  1. Umetnite novi list i dajte mu naziv "Master" u radnoj knjizi. Preimenujte ga kasnije ako želite.
  2. Umetnite modul u VBA editor i kopirajte iznad VBA koda.
  3. Pokrenite makro.
  4. Od vas će se tražiti da odaberete naslove. Odaberite naslov i pritisnite OK.

I to je učinjeno. Svi listovi su spojeni u master.

Kako radi?
Pretpostavljam da poznajete osnove stvaranja objekata i varijabli u VBA -i. u prvom smo dijelu stvorili objekt i varijable koje će nam trebati u našim operacijama.

Pa većinu stvari koje sam objasnio pomoću komentara u vba kodu. Pogledajmo glavni dio ovog vba koda.

Za svaki ws U wb.Worksheets 'osim glavnog lista iz petlje Ako ws.Name "Master" Zatim 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. Ćelije (redovi.broj, 1). Kraj (xlUp). Redak + 1) kraj ako je sljedeće ws

U ranijim člancima naučili smo kako prolaziti kroz listove i kako doći do zadnjeg retka i stupca pomoću vba.

Ovdje prolazimo kroz svaki list u glavnoj radnoj knjizi pomoću for petlje.
Za svaki ws U wb.Radni listovi

Zatim isključujemo "glavni" list iz petlje, jer ćemo konsolidirati naše podatke u tom listu.

Zatim dobivamo posljednji red i posljednji broj stupca.

Sada je sljedeći redak vrlo važan. Uradili smo više operacija u jednoj liniji.
Raspon (ćelije (startRow, startCol), ćelije (lastRow, lastCol)). Kopiraj _
mtr.Range ("A" & mtr.Cells (Rows.Count, 1) .End (xlUp) .Row + 1)

Prvo formiramo raspon pomoću startRow, startCol i lastRow i lastCol.

Raspon (ćelije (startRow, startCol), ćelije (lastRow, lastCol)) Kopirali smo ga metodom kopiranja raspona. Raspon (ćelije (startRow, startCol), ćelije (lastRow, lastCol)). Kopiraj Zalijepili smo ga izravno u prvu praznu ćeliju nakon posljednje ćelije koja nije prazna u stupcu A glavnog lista (mtr.Cells (Rows.Count, 1) .End (xlUp) .Red + 1). Raspon (ćelije (startRow, startCol), ćelije (lastRow, lastCol)). Kopiraj _ mtr.Range ("A" & mtr.Cells (Rows.Count, 1) .End (xlUp) .Row + 1)

Ova petlja radi za sve listove i kopira podatke svakog lista u glavni list.

Konačno, na kraju makronaredbe aktiviramo glavnu tablicu kako bismo vidjeli izlaz.

Pa da, dečki, ovako možete spojiti svaki list u radnoj knjizi. Javite mi ako imate bilo kakvih pitanja u vezi ovog VBA koda ili bilo koje excel teme u odjeljku komentara u nastavku.
Preuzmi datoteku:

Objedinite_Merge više radnih listova u jedan glavni list pomoću VBA

Povezani članci:

Kako prelistati listove

kako doći do zadnjeg retka i stupca pomoću vba

Brisanje listova bez upita za potvrdu pomoću VBA u programu Microsoft Excel

Dodajte i spremite novu radnu knjigu pomoću VBA -a u programu Microsoft Excel 2016

Prikažite poruku na statusnoj traci programa Excel VBA

Isključite poruke upozorenja pomoću VBA u programu Microsoft Excel 2016

Popularni članci:

Funkcija VLOOKUP u Excelu

COUNTIF u Excelu 2016

Kako koristiti funkciju SUMIF u Excelu