Kopirajte obseg z vsakega lista na en list z uporabo VBA v Microsoft Excelu

Anonim

V tem članku bomo ustvarili makro za kopiranje podatkov iz vseh listov v delovnem zvezku na nov list.

Neobdelani podatki za ta primer so sestavljeni iz podrobnosti o zaposlenih iz različnih oddelkov na različnih listih. Podrobnosti o zaposlenih želimo združiti v en list.

Za konsolidacijo podatkov smo ustvarili makro »CopyRangeFromMultipleSheets«. Ta makro lahko zaženete s klikom na gumb »Konsolidiraj podatke«.

Makro bo ustvaril nov delovni list in vstavil konsolidirane podatke iz vseh delovnih listov.

Razlaga kode

'Ponavljanje' po vseh listih, da preverite, ali obstaja "Glavni" list.

Za vsak vir v tej delovni knjigi. Delovni listi

Če je Source.Name = "Master" Potem

MsgBox "Glavni list že obstaja"

Zapri pod

Konec Če

Naslednji

Zgornja koda se uporablja za preverjanje, ali v delovnem zvezku obstaja list »Glavni«. Če v delovnem zvezku obstaja list »Glavni«, se koda zapre in prikaže se sporočilo o napaki.

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

Zgornja koda se uporablja za pridobitev številke vrstice zadnje celice na listu.

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

Zgornja koda se uporablja za kopiranje določenega obsega v definirano celico.

Za kodo sledite spodaj

 Sub CopyRangeFromMultipleSheets () 'Deklariranje spremenljivk Zatemni vir kot delovni list Zatemni cilj kot delovni list Zatemni SourceLastRow, DestLastRow Kot dolga Application.ScreenUpdating = False' Prelistajte vse liste, da preverite, ali obstaja "Glavni" list za vsak vir v tej delovni knjigi. = "Glavni" Potem MsgBox "Glavni list že obstaja" Izhod iz podkoncepta, če je naslednji "Vstavljanje novega lista po listu" Glavni "Nastavi cilj = Delovni listi.Dodaj (po: = List (" Glavni ")) Destination.Name =" Master "'Prelistavanje vseh listov v delovnem zvezku Za vsak vir v tem delovnem zvezku. Delovni listi" Preprečevanje konsolidacije podatkov iz "Main" in "Master" lista Če Source.Ime "Main" In Source.Name "Master" Potem SourceLastRow = Vir .Range ("A1"). SpecialCells (xlLastCell) .Row Source.Aktivirajte If Source.UsedRange.Count> 1 Potem je DestLastRow = Sheets ("Master"). Range ("A1"). SpecialCells (xlLastCell) .Row If DestLastRow = 1 Nato "kopiranje podatkov z izvornega lista na ciljni list Source.Range (" A 1 ", obseg (" A1 "). SpecialCells (xlLastCell)). Kopiraj Destination.Range (" A "& DestLastRow) Else Source.Range (" A2 ", Range (" A1 "). SpecialCells (xlCellTypeLastCell)). Kopiraj Destination.Range ("A" & (DestLastRow + 1)) End If End If End Če Naslednji cilj. Aktivirajte Application.ScreenUpdating = True End Sub 

Če vam je bil ta blog všeč, ga delite s prijatelji na Facebooku. Prav tako nam lahko sledite na Twitterju in Facebooku.

Radi bi slišali od vas, nam sporočite, kako lahko izboljšamo svoje delo in ga izboljšamo za vas. Pišite nam na spletnem mestu e -pošte