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