I den här artikeln kommer vi att skapa ett makro för att kopiera data från alla blad i arbetsboken till ett nytt blad.
Rådata för detta exempel består av medarbetardetaljer från olika avdelningar i olika blad. Vi vill samla medarbetardetaljer i ett enda blad.
Vi har skapat makroet “CopyRangeFromMultipleSheets” för konsolidering av data. Detta makro kan köras genom att klicka på knappen "Konsolidera data".
Makro kommer att skapa ett nytt kalkylblad och infoga konsoliderade data från alla kalkylblad.
Kodförklaring
"Looping" genom alla blad för att kontrollera om "Master" -ark finns.
För varje källa i ThisWorkbook.Worksheets
Om Source.Name = "Master" Då
MsgBox "Huvudark finns redan"
Avsluta Sub
Avsluta om
Nästa
Ovanstående kod används för att kontrollera om "Master" -ark finns i arbetsboken. Om det finns "Master" -ark i arbetsboken, avslutas koden och ett felmeddelande visas.
Source.Range ("A1"). SpecialCells (xlLastCell) .Row
Ovanstående kod används för att få radnumret för den sista cellen i arket.
Source.Range ("A1", Range ("A1"). SpecialCells (xlLastCell)). Copy Destination.Range ("A" & DestLastRow)
Ovanstående kod används för att kopiera det angivna intervallet till den definierade cellen.
Följ koden nedan
Sub CopyRangeFromMultipleSheets () 'Declaring variables Dim Source As Worksheet Dim Destination As Worksheet Dim SourceLastRow, DestLastRow As Long Application.ScreenUpdating = False' Looping through all sheets to check whether "Master" sheet exist For each Source In ThisWorkbook.Worksheets If Source.Name = "Master" Då finns redan MsgBox "Master sheet" Avsluta Sub End If Next 'Infoga ett nytt blad efter "Main" -arket Ange destination = arbetsblad.Add (efter: = Sheets ("Main")) Destination.Name = " Master "'Bläddra igenom alla blad i arbetsboken för varje källa i ThisWorkbook.Worksheets' Förhindra konsolidering av data från" Main "och" Master "-arket Om Source.Name" Main "Och Source.Name" Master "Sedan 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 Kopiera sedan data från källbladet till destinationsarket Source.Range ("A 1 ", Range (" A1 "). SpecialCells (xlLastCell)). Kopiera Destination.Range (" A "& DestLastRow) Annan Source.Range (" A2 ", Range (" A1 "). SpecialCells (xlCellTypeLastCell)). Kopiera Destination.Range ("A" & (DestLastRow + 1)) End If End If End If Next Destination.Activate Application.ScreenUpdating = True End Sub
Om du gillade den här bloggen, dela den med dina vänner på Facebook. Du kan också följa oss på Twitter och Facebook.
Vi vill gärna höra från dig, låt oss veta hur vi kan förbättra vårt arbete och göra det bättre för dig. Skriv till oss på e -postwebbplatsen