Copiați un interval din fiecare coală într-o coală folosind VBA în Microsoft Excel

Cuprins

În acest articol, vom crea o macrocomandă pentru a copia datele din toate foile din registrul de lucru într-o foaie nouă.

Datele brute pentru acest exemplu constau în detalii despre angajați din diferite departamente în diferite foi. Vrem să consolidăm detaliile angajaților într-o singură foaie.

Am creat macrocomanda „CopyRangeFromMultipleSheets” pentru consolidarea datelor. Această macrocomandă poate fi rulată făcând clic pe butonul „Consolidare date”.

Macro va crea o nouă foaie de lucru și va insera datele consolidate din toate foile de lucru.

Explicarea codului

„Buclă” prin toate foile pentru a verifica dacă există foaia „Master”.

Pentru fiecare sursă din ThisWorkbook.Worksheets

Dacă Source.Name = "Master" Atunci

MsgBox „Foaia principală există deja”

Ieșiți din Sub

End If

Următorul

Codul de mai sus este utilizat pentru a verifica dacă foaia „Master” există în registrul de lucru. Dacă foaia „Master” există în registrul de lucru, atunci codul iese și se afișează un mesaj de eroare.

Source.Range ("A1"). SpecialCells (xlLastCell) .Row

Codul de mai sus este utilizat pentru a obține numărul rândului ultimei celule din foaie.

Source.Range ("A1", Range ("A1"). SpecialCells (xlLastCell)). Copiați destinația. Range ("A" & DestLastRow)

Codul de mai sus este utilizat pentru a copia intervalul specificat în celula definită.

Vă rugăm să urmați codul de mai jos

 Sub CopyRangeFromMultipleSheets () 'Declararea variabilelor Dim Sursă ca foaie de lucru Dim Destinație ca foaie de lucru Dim SourceLastRow, DestLastRow ca lungă Application.ScreenUpdating = False' Cercetând prin toate foile pentru a verifica dacă există foaia "Master" pentru fiecare sursă din acest manual de lucru. = "Master" Apoi MsgBox "Foaia principală există deja" Ieșiți din Sub End If Next 'Se introduce o foaie nouă după foaia „Main” Set Destinație = Worksheets.Add (after: = Sheets („Main”)) Destination.Name = " Master "'Cercetând toate foile din registrul de lucru pentru fiecare sursă din acest manual de lucru. Fișele de lucru' Prevenirea consolidării datelor din foaia" Main "și" Master "Dacă Source.Name" Main "Și Source.Name" Master "Apoi SourceLastRow = Source .Range ("A1"). SpecialCells (xlLastCell) .Row Source.Activate If Source.UsedRange.Count> 1 Then DestLastRow = Sheets ("Master"). Range ("A1"). SpecialCells (xlLastCell) .Row If DestLastRow = 1 Apoi 'copiați datele din foaia sursă pe foaia de destinație Source.Range ("A 1 ", Range (" A1 "). SpecialCells (xlLastCell)). Copy Destination.Range (" A "& DestLastRow) Else Source.Range (" A2 ", Range (" A1 "). SpecialCells (xlCellTypeLastCell)). Copy Destination.Range („A” & (DestLastRow + 1)) End If End If End If End If Next Destination.Activate Application.ScreenUpdating = True End Sub 

Dacă ți-a plăcut acest blog, distribuie-l prietenilor tăi de pe Facebook. De asemenea, ne puteți urmări pe Twitter și Facebook.

Ne-ar plăcea să aflăm de la dvs., să ne anunțați cum putem îmbunătăți munca noastră și o putem îmbunătăți. Scrieți-ne pe site-ul de e-mail

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

wave wave wave wave wave