Consolidați / îmbinați mai multe foi de lucru într-o singură foaie principală utilizând VBA

Cuprins

Uneori dorim să îmbinăm mai multe foi într-o singură coală, astfel încât să putem analiza cu ușurință datele și să le transformăm în niște informații utile. Aceste articole vă vor spune cum să îmbinați mai multe foi de lucru într-o singură foaie de lucru folosind VBA.
Exemplu:

Aici am preluat câteva date de pe server care returnează date în diferite foi de lucru. Am adăugat încă o foaie și am numit-o „Maestră”. Alte nume de foi nu contează.
Acum executați această macrocomandă.

Sub Merge_Sheets () Dim startRow, startCol, lastRow, lastCol As Long headers Dim As Range 'Set Master sheet for consolidation 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 Each ws În wb.Worksheets ', cu excepția foii master din buclă If ws.Name "Master" Atunci ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Cells (startRow, Columns.Count). End (xlToLeft) .Column 'obțineți date din fiecare foaie de lucru și copiați-le în gama de foi master (Celule (startRow, startCol), Cells (lastRow, lastCol)). Copiați _ mtr.Range („A” & mtr.Cells (Rows) .Count, 1) .End (xlUp) .Row + 1) End If Next ws Worksheets ("Master"). Activați End Sub 

Cum se îmbină foile folosind această macro VBA?

  1. Introduceți o foaie nouă și denumiți-o „Master” în registrul de lucru. Redenumiți-l mai târziu, dacă doriți.
  2. Introduceți un modul în editorul VBA și copiați deasupra codului VBA.
  3. Rulați macro-ul.
  4. Vi se va cere să selectați titluri. Selectați titlul și apăsați OK.

Și s-a făcut. Toate foile sunt îmbinate în master.

Cum functioneaza?
Presupun că cunoașteți noțiunile de bază despre crearea obiectelor și variabilelor în VBA. în prima parte am creat obiect și variabile de care vom avea nevoie în operațiile noastre.

Ei bine, majoritatea lucrurilor pe care le-am explicat folosind comentarii în codul vba. Să vedem partea principală a acestui cod vba.

Pentru fiecare ws în wb.Whekshets ', cu excepția foii master din buclă If ws.Name "Master" Atunci ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Cells (startRow, Coloane. Count) .End (xlToLeft) .Column 'obțineți date din fiecare foaie de lucru și copiați-le în gama de foi master (Celule (startRow, startCol), Cells (lastRow, lastCol)). Copiați _ mtr.Range ("A" & mtr. Celule (Rows.Count, 1). End (xlUp). Row + 1) End If Next ws

În articolele anterioare am învățat cum să parcurgeți foile și cum să obțineți ultimul rând și coloană folosind vba.

Aici parcurgem fiecare foaie din registrul de lucru principal folosind for loop.
Pentru fiecare ws în wb. Foi de lucru

Apoi excludem foaia „master” din buclă, deoarece ne vom consolida datele în foaia respectivă.

Apoi obținem ultimul rând și ultimul număr de coloană.

Acum următoarea linie este foarte importantă. Am făcut mai multe operații într-o singură linie.
Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copiați _
mtr.Range ("A" & mtr.Cells (Rows.Count, 1) .End (xlUp) .Row + 1)

Mai întâi formăm o gamă folosind startRow, startCol și lastRow și lastCol.

Range (Cells (startRow, startCol), Cells (lastRow, lastCol)) L-am copiat folosind metoda de copiere a gamei. Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copiere L-am lipit direct în prima celulă goală după ultima celulă necompletată din coloana A a foii principale (mtr.Cells (Rows.Count, 1). End (xlUp). rând + 1). Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copiați _ mtr.Range („A” & mtr.Cells (Rows.Count, 1) .End (xlUp) .Row + 1)

Această buclă rulează pentru toate foile și copiază fiecare fișă de date în foaia principală.

În cele din urmă, la sfârșitul macro activăm foaia principală pentru a vedea rezultatul.

Deci, băieți, așa puteți combina fiecare foaie într-un registru de lucru. Spuneți-mi dacă aveți vreo întrebare referitoare la acest cod VBA sau la orice subiect Excel din secțiunea de comentarii de mai jos.
Descărcare fișier:

Consolidate_Merge mai multe foi de lucru într-o singură foaie master folosind VBA

Articole similare:

Cum să parcurgeți foile

cum se obține ultimul rând și coloană folosind vba

Ștergeți foile fără solicitări de confirmare folosind VBA în Microsoft Excel

Adăugați și salvați un registru de lucru nou folosind VBA în Microsoft Excel 2016

Afișați un mesaj pe bara de stare Excel VBA

Dezactivați mesajele de avertizare folosind VBA în Microsoft Excel 2016

Articole populare:

Funcția VLOOKUP în Excel

COUNTIF în Excel 2016

Cum se utilizează funcția SUMIF în Excel

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave