Kopier et område fra hvert ark til et ark ved hjælp af VBA i Microsoft Excel

Anonim

I denne artikel opretter vi en makro til kopiering af data fra alle arkene i projektmappen til et nyt ark.

Rådata for dette eksempel består af medarbejderoplysninger fra forskellige afdelinger i forskellige ark. Vi ønsker at konsolidere medarbejderoplysninger i et enkelt ark.

Vi har oprettet “CopyRangeFromMultipleSheets” makro til konsolidering af dataene. Denne makro kan køres ved at klikke på knappen "Konsolider data".

Makro opretter et nyt regneark og indsætter de konsoliderede data fra alle regnearkene.

Kode forklaring

'Looping' gennem alle ark for at kontrollere, om "Master" -ark findes.

For hver kilde i ThisWorkbook.Worksheets

Hvis Source.Name = "Master" Så

MsgBox "Hovedark findes allerede"

Afslut Sub

Afslut Hvis

Næste

Ovenstående kode bruges til at kontrollere, om der findes "Master" -ark i projektmappen. Hvis der findes "Master" -ark i projektmappen, forlader koden, og der vises en fejlmeddelelse.

Kilde.Range ("A1"). Specialceller (xlLastCell) .Række

Ovenstående kode bruges til at få rækkenummeret for den sidste celle i arket.

Source.Range ("A1", Range ("A1"). SpecialCells (xlLastCell)). Copy Destination.Range ("A" & DestLastRow)

Ovenstående kode bruges til at kopiere det angivne område til den definerede celle.

Følg venligst nedenstående for koden

 Sub CopyRangeFromMultipleSheets () 'Deklarationsvariabler Dim Source As Worksheet Dim Destination As Worksheet Dim SourceLastRow, DestLastRow As Long Application.ScreenUpdating = False' Sløjfer gennem alle ark for at kontrollere, om "Master" -ark findes for hver kilde i ThisWorkbook.Worksheets If Source.Name = "Master" Så eksisterer MsgBox "Master sheet allerede" Exit Sub End If Next 'Indsætning af et nyt ark efter "Main" -ark Angiv destination = Arbejdsark.Add (efter: = Sheets ("Main")) Destination.Name = " Master "'Looping gennem alle arkene i projektmappen for hver kilde i ThisWorkbook.Worksheets' Forebygger konsolidering af data fra" Main "og" Master "-ark Hvis Source.Name" Main "Og Source.Name" Master "Så SourceLastRow = Source .Range ("A1"). SpecialCells (xlLastCell) .Rækilde.Aktiver Hvis Source.UsedRange.Count> 1 Så DestLastRow = Sheets ("Master"). Range ("A1"). SpecialCells (xlLastCell) .Række Hvis DestLastRow = 1 'Kopier derefter data fra kildearket til destinationsarket Source.Range ("A 1 ", Range (" A1 "). SpecialCells (xlLastCell)). Kopier Destination.Range (" A "& DestLastRow) Else Source.Range (" A2 ", Range (" A1 "). SpecialCells (xlCellTypeLastCell)). Kopier Destination.Range ("A" & (DestLastRow + 1)) End If End If End If Next Destination.Activate Application.ScreenUpdating = True End Sub 

Hvis du kunne lide denne blog, kan du dele den med dine venner på Facebook. Du kan også følge os på Twitter og Facebook.

Vi vil meget gerne høre fra dig, lad os vide, hvordan vi kan forbedre vores arbejde og gøre det bedre for dig. Skriv til os på e -mail -stedet