Kopirajte CurrentRegion ćelije svakog lista u jedan list pomoću VBA u programu Microsoft Excel

Anonim

Ako rukujete s više listova odjednom i želite kopirati podatke sa svakog lista u glavni radni list, trebali biste pročitati ovaj članak. Koristit ćemo svojstvo currentregion VBA koda za objedinjavanje podataka sa svih radnih listova u jedan list. Ovo je svojstvo korisno za mnoge operacije koje automatski proširuju odabir tako da obuhvaćaju cijelo trenutno područje, poput metode AutoFormat. Ovo svojstvo ne može se koristiti na zaštićenom radnom listu.

Uvjet je: svaki list treba sadržavati sličan format, tj. Isti broj stupaca; koristeći isti format možemo imati točno spojene podatke.

Napomena: ovaj članak će demonstrirati korištenje VBA koda; ako se iz bilo kojeg razloga broj stupaca razlikuje na jednom od listova, tada cijeli spojeni podaci neće dati točnu sliku. Preporučuje se korištenje istog broja stupaca. VBA kôd će dodati novi list u radnu knjigu, a zatim kopirati i zalijepiti podatke nakon svakog lista bez prepisivanja.

Uzmimo primjer 3 lista, naime siječanj, veljača i ožujak. Slijedi snimak ovih listova:

Za kombiniranje podataka sa svih listova u jedan list, moramo slijediti korake u nastavku za pokretanje VB uređivača:

  • Kliknite karticu Developer
  • Iz grupe kodova odaberite Visual Basic

  • Kopirajte donji kod u standardni modul
Sub CopyCurrentRegion () Dim sh Kao radni list Dim DestSh Kao radni list Dim Last As Long If SheetExists ("Master") = True then MsgBox "Master List već postoji" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh .Name = "Master" Za svako sh u ovoj radnoj knjizi.Radni listovi Ako je sh.Name DestSh.Name Onda ako je sh.UsedRange.Count> 1 Zatim Last = LastRow (DestSh) sh.Range ("A1"). CurrentRegion.Copy DestSh. Ćelije (Last + 1, 1) End If End If Next Application.ScreenUpdating = True End Sub Sub CopyCurrentRegionValues ​​() Dim sh kao radni list Dim DestSh kao radni list Dim Last As Long If SheetExists ("Master") = True Then MsgBox "List Master već postoji "Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name =" Master "Za svako sh u ovoj radnoj knjizi. Radni listovi Ako je sh.Name DestSh.Name Onda ako je sh.UsedRange.Count> 1 Zatim Last = LastRow (DestSh) With sh.Range ("A1"). CurrentRegion DestSh.Cells (Last + 1, 1) .Resize (.Rows.Count, _ .Columns.Count) .Vrednost = .Vrijednost Završi s Endom Ako završi Ako Slijedeća aplikacija.ScreenUpdating = Istinita završna podfunkcija LastRow (sh kao radni list) On Error Resume Next LastRow = sh.Cells.Find (What: = "*", _ After: = sh.Range ("A1"), _ Traži: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False). Greška pri uključivanju Idi na 0 Završi funkciju Funkcija Lastcol (sh kao radni list ) On Error Resume Next Lastcol = sh.Cells.Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns , _ SearchDirection: = xlPrevious, _ MatchCase: = False). Stupac na pogrešku Idi na 0 Završi funkciju Funkcijski list Postoji (SName As String, _ Opcionalno ByVal WB kao radna knjiga) Kao Boolean Uključeno Pogreška Nastavi dalje Ako WB nije ništa Zatim postavite WB = Ova radna knjiga SheetEgists = CBool ​​(Len (Sheets (SName) .Name)) Funkcija završetka 

Makro CopyCurrentRegion će pozvati funkciju „SheetExists“ i provjerit će postoji li naziv radnog lista s „Master“; ako se pronađe, neće učiniti ništa, inače će umetnuti novi radni list u aktivnu radnu knjigu i preimenovati ga u "Master", a zatim će kopirati podatke sa svih listova.

Slijede snimke konsolidiranih podataka:

Napomena: Uzorak radne knjige sadrži Glavni radni list; predlaže se brisanje glavnog radnog lista, a zatim pokretanje makronaredbe da biste vidjeli kako VBA kôd radi.

Zaključak:Sada imamo kôd koji možemo koristiti za prijenos podataka sa svakog radnog lista u jedan list.

Ako vam se sviđaju naši blogovi, podijelite ih sa svojim prijateljima na Facebooku. Također nas možete pratiti na Twitteru i Facebooku.

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