Kopirajte raspon sa svakog lista u jedan list pomoću VBA u programu Microsoft Excel

Anonim

U ovom ćemo članku stvoriti makro za kopiranje podataka sa svih listova u radnoj knjizi na novi list.

Sirovi podaci za ovaj primjer sastoje se od podataka o zaposlenicima iz različitih odjela na različitim listovima. Želimo objediniti podatke o zaposlenicima u jedan list.

Napravili smo makro „CopyRangeFromMultipleSheets“ za konsolidaciju podataka. Ovu makronaredbu možete pokrenuti klikom na gumb "Konsolidiraj podatke".

Makro će stvoriti novi radni list i umetnuti konsolidirane podatke sa svih radnih listova.

Objašnjenje koda

'Petlja' kroz sve listove radi provjere postoji li "Glavni" list.

Za svaki izvor u ovoj radnoj knjizi.Radni listovi

Ako je Source.Name = "Master" Tada

MsgBox "Glavni list već postoji"

Izlaz iz podv

Završi ako

Sljedeći

Gornji kôd koristi se za provjeru postoji li u radnoj knjizi list "Master". Ako list "Master" postoji u radnoj knjizi, kôd izlazi i prikazuje se poruka o pogrešci.

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

Gornji kôd koristi se za dobivanje broja retka zadnje ćelije na listu.

Izvor.Range ("A1", Raspon ("A1"). Posebne ćelije (xlLastCell)). Kopiraj Odredište.Range ("A" & DestLastRow)

Gornji kôd koristi se za kopiranje navedenog raspona u definiranu ćeliju.

Molimo slijedite dolje za kôd

 Sub CopyRangeFromMultipleSheets () 'Deklariranje varijabli Zatamni izvor kao radni list Odredište zatamnjivanja Kao radni list Zatamni SourceLastRow, DestLastRow kao dugačka aplikacija.ScreenUpdating = False' Ponavlja se kroz sve listove kako bi se provjerilo postoji li lista "Master" za svaki izvor u ovoj radnoj knjizi. Radni listovi Ako izvor.ime = "Master" Zatim MsgBox "Master list već postoji" Exit Sub End If Next 'Umetanje novog lista nakon lista "Main" Set Destination = Worksheets.Add (after: = Sheets ("Main")) Destination.Name = " Master "'Ponavljanje svih listova u radnoj knjizi Za svaki izvor u ovoj radnoj knjizi. Radni listovi" Sprječavanje konsolidacije podataka s lista "Main" i "Master" Ako Source.Name "Main" i Source.Name "Master" Zatim SourceLastRow = Izvor .Range ("A1"). SpecialCells (xlLastCell) .Row Source.Aktivirajte If Source.UsedRange.Count> 1 Zatim DestLastRow = Sheets ("Master"). Raspon ("A1"). SpecialCells (xlLastCell) .Row Ako je DestLastRow = 1 Zatim 'kopiranje podataka s izvornog lista na odredišni list Source.Range ("A 1 ", raspon (" A1 "). SpecialCells (xlLastCell)). Kopiraj Odredište.Range (" A "& DestLastRow) Drugi izvor.Range (" A2 ", Raspon (" A1 "). Posebne ćelije (xlCellTypeLastCell)). Kopiraj Destination.Range ("A" & (DestLastRow + 1)) End If End If End If Next Destination.Aktivirajte Application.ScreenUpdating = True End Sub 

Ako vam se dopao ovaj blog, podijelite ga sa svojim prijateljima na Facebooku. Također, možete nas pratiti na Twitteru i Facebooku.

Voljeli bismo vas čuti, javite nam kako možemo poboljšati svoj rad i učiniti ga boljim za vas. Pišite nam na web stranici e -pošte