Kopier et område fra hvert ark til ett ark ved hjelp av VBA i Microsoft Excel

Anonim

I denne artikkelen vil vi lage en makro for å kopiere data fra alle arkene i arbeidsboken til et nytt ark.

Rådata for dette eksemplet består av ansattdetaljer fra forskjellige avdelinger i forskjellige ark. Vi ønsker å konsolidere detaljer om ansatte i et enkelt ark.

Vi har laget “CopyRangeFromMultipleSheets” makro for konsolidering av dataene. Denne makroen kan kjøres ved å klikke "Konsolider data" -knappen.

Makro vil opprette et nytt regneark og sette inn de konsoliderte dataene fra alle regnearkene.

Kode forklaring

'Sløyfe' gjennom alle arkene for å sjekke om det finnes "Master" -ark.

For hver kilde i ThisWorkbook.Worksheets

Hvis Source.Name = "Master" Da

MsgBox "Hovedark eksisterer allerede"

Avslutt Sub

Slutt om

Neste

Koden ovenfor brukes til å kontrollere om det er "Master" -ark i arbeidsboken. Hvis "Master" -arket finnes i arbeidsboken, går koden ut og en feilmelding vises.

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

Koden ovenfor brukes til å få radnummeret til den siste cellen i arket.

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

Koden ovenfor brukes til å kopiere det angitte området til den definerte cellen.

Følg koden nedenfor

 Sub CopyRangeFromMultipleSheets () 'Deklarasjonsvariabler 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" Da eksisterer MsgBox "Master sheet allerede" Avslutt Sub End If Next 'Sette inn et nytt ark etter "Main" -arket Angi destinasjon = arbeidsark.Add (after: = Sheets ("Main")) Destination.Name = " Master "'Sløyfe gjennom alle arkene i arbeidsboken for hver kilde i ThisWorkbook.Worksheets' Forhindre konsolidering av data fra" Main "og" Master "-ark Hvis Source.Name" Main "Og Source.Name" Master "Så 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 Kopier deretter data fra kildearket til destinasjonsarket Source.Range ("A 1 ", Range (" A1 "). SpecialCells (xlLastCell)). Kopier Destination.Range (" A "& DestLastRow) Annen kilde.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 likte denne bloggen, del den med vennene dine på Facebook. Du kan også følge oss på Twitter og Facebook.

Vi vil gjerne høre fra deg, gi oss beskjed om hvordan vi kan forbedre arbeidet vårt og gjøre det bedre for deg. Skriv til oss på e -post