Če želite uporabiti obseg vsakega delovnega lista v glavni list, preberite ta članek. Kodo VBA bomo uporabili za kopiranje podatkov z vsakega delovnega lista in nato prilepitev na drug list brez prepisovanja.
Makro bo v vaš delovni zvezek dodal list z imenom Master in kopiral celice z vsakega lista v vašem delovnem zvezku na tem delovnem listu.
Prvi makro naredi običajno kopiranje, drugi makro pa kopira vrednosti. Podrejence makra uporabljajo spodnje funkcije; makro ne bo deloval brez funkcij.
Sledi posnetek podatkov iz Sheet1 & Sheet2:
Za zagon urejevalnika VB moramo slediti spodnjim korakom:
- Kliknite zavihek Razvijalec
- V skupini Koda izberite Visual Basic
- Kopirajte spodnjo kodo v standardni modul
Sub CopyUsedRange () Dim sh kot delovni list Dim DestSh kot delovni list Dim Last As Long Če SheetExists ("Master") = True Potem MsgBox "Glavni list lista že obstaja" Zapustite Sub End Če Application.ScreenUpdating = False Set DestSh = Delovni listi. .Name = "Master" Za vsak sh v tej delovni knjigi. Delovni listi Če ime sh. DestSh.Name Potem, če sh.UsedRange.Count> 1 Potem 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 kot delovni list Dim DestSh kot delovni list Dim Last As Long Če SheetExists ("Master") = True Potem MsgBox "Glavni list lista že obstaja" Izhod Sub End Če Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name = "Master" Za vsako sh v tej delovni knjigi. Delovni listi 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 = .Value End With End If End Če je naslednji Ap plication.ScreenUpdating = True End Sub Function LastRow (sh kot delovni list) Ob nadaljevanju napake Next LastRow = sh.Cells.Find (Kaj: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False). Napaka pri vklopu Pojdi na 0 Konec funkcije Funkcija Lastcol (sh kot delovni list) Napaka Nadaljuj Naprej Lastcol = sh.Cells .Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlPrethodno, _ MatchCase: Stolpec pri napaki Pojdi na 0 Končaj funkcijo Funkcija SheetExists (SName As String, _ Izbirno ByVal WB kot delovni zvezek) Kot Boolean On Error Nadaljuj naprej Če WB ni nič, potem nastavite WB = ThisWorkbook SheetExists = CBool (Len (Sheets (SName)) .Ime)) Končna funkcija
Zdaj je koda makra nastavljena; zagnali bomo makro »CopyUsedRange« in vstavil bo nov list »Master« in kopiral podatke z vsakega lista.
Zaključek:Kopiranje podatkov z več listov je ročno opravilo; vendar; z zgornjo kodo lahko podatke združimo z enim klikom na makro.
Če so vam bili naši blogi všeč, jih delite s prijatelji na Facebooku. Prav tako nas lahko spremljate na Twitterju in Facebooku.
Radi bi slišali od vas, nam sporočite, kako lahko izboljšamo, dopolnimo ali inoviramo svoje delo in ga izboljšamo. Pišite nam na spletni strani elektronske pošte