Kopirajte UsedRange svakog lista u jedan list pomoću VBA u Microsoft Excelu

Anonim

U slučaju da želite iskoristiti raspon svakog radnog lista u glavni list, trebali biste pročitati ovaj članak. Koristit ćemo VBA kôd za kopiranje podataka sa svakog radnog lista, a zatim zalijepiti u drugi list bez prepisivanja.

Makronaredba će dodati list s imenom Master u vašu radnu knjigu i kopirati ćelije sa svakog lista u vašoj radnoj knjizi na ovom radnom listu.

Prvi makro radi normalnu kopiju, a drugi makro kopira vrijednosti. Podsjetnici makronaredbe koriste dolje navedene funkcije; makronaredbe neće funkcionirati bez funkcija.

Slijedi snimak podataka s lista 1 i lista 2:

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 CopyUsedRange () Dim sh Kao radni list Dim DestSh Kao radni list Dim Last As Long If SheetExists ("Master") = True then MsgBox "Master Master lista 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.UsedRange.Copy DestSh.Cells (Last + 1, 1 ) End If End If Next Application.ScreenUpdating = True End Sub Sub CopyUsedRangeValues ​​() Dim sh As Radni list Dim DestSh As Worksheet Dim Last As Long Ako SheetExists ("Master") = True Onda MsgBox "Master lista već postoji" Exit Sub End Ako Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name = "Master" Za svaki sh u ovoj radnoj knjizi.Radni listovi If sh.Name DestSh.Name Then If sh.UsedRange.Count> 1 Then Last = LastRow (DestSh) With sh.UsedRange DestSh.Cells (Last + 1, 1) .Resize (.Rows.Count, _ .Columns.Count) .Value = .Vrednost End With End If End If Next Ap plication.ScreenUpdating = True End Sub Function LastRow (sh kao radni list) On Error Resume Next LastRow = sh.Cells.Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _Nalog za pretraživanje: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False). Greška pri ponovnom uključivanju Idi na 0 Kraj funkcije Funkcija Lastcol (sh Kao radni list) Uključeno Pogreška Nastavi Sljedeći Lastcol = sh. ćelije .Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlPrethodni, _ MatchCase: = Netačno). Stupac Uključeno Greška Idi na 0 Završi Funkcija Funkcija SheetExists (SName As String, _ Opcionalno ByVal WB kao radna knjiga) Kao Boolean On Error Nastavi dalje Ako WB nije ništa Zatim postavite WB = ThisWorkbook SheetExists = CBool ​​(Len (Sheets (SName)) .Naziv)) Funkcija završetka 

Sada je makro kôd postavljen; pokrenut ćemo makro "CopyUsedRange" i umetnut će novi list "Master" i kopirati podatke sa svakog lista.

Zaključak:Kopiranje podataka s više listova ručni je zadatak; međutim; s gornjim kodom možemo konsolidirati podatke jednim klikom na makronaredbu.

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