Kopier UsedRange af hvert ark til et ark ved hjælp af VBA i Microsoft Excel

Anonim

Hvis du vil kopiere det anvendte område af hvert regneark til hovedark, skal du læse denne artikel. Vi vil bruge VBA -kode til at kopiere dataene fra hvert regneark og derefter indsætte i et andet ark uden at overskrive.

Makroen tilføjer et ark med navnet Master til din projektmappe og kopierer cellerne fra hvert ark i din projektmappe i dette regneark.

Den første makro kopierer en normal kopi, og den anden makro kopierer værdierne. Makroens subs bruger funktionerne herunder; makroerne fungerer ikke uden funktionerne.

Følgende er et øjebliksbillede af data fra Sheet1 & Sheet2:

Vi skal følge nedenstående trin for at starte VB -editor:

  • Klik på fanen Udvikler
  • Vælg Visual Basic i kodegruppen

  • Kopier nedenstående kode i standardmodulet
Sub CopyUsedRange () Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long If SheetExists ("Master") = True Then MsgBox "Sheet Master exist exist" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh .Name = "Master" for hver sh i ThisWorkbook.Worksheets If sh.Name DestSh.Name Then If sh.UsedRange.Count> 1 Then 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 Worksheet Dim DestSh As Worksheet Dim Dim As Long If SheetExists ("Master") = True Then MsgBox "Sheet Master exist allerede" Exit Sub End Hvis Application.ScreenUpdating = False Angiv DestSh = Worksheets.Add DestSh.Name = "Master" for hver sh i ThisWorkbook.Worksheets 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 If Next Ap plication.ScreenUpdating = True End Sub Function LastRow (sh As Worksheet) On Error Resume Next LastRow = sh.Cells.Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False) .Række på fejl Gå til 0 Afslut funktion Funktion Lastcol (sh som regneark) Ved fejl Genoptag Næste Lastcol = sh.Cells .Find (Hvad: = "*", _ Efter: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlPrevious, _ MatchCase: = Falsk) .Kolonne ved fejl GoTo 0 Afslut funktion FunktionsarkEksister (SName som streng, _ Valgfri ByVal WB som arbejdsmappe) Som boolsk ved fejl Genoptag næste, hvis WB ikke er noget, så indstil WB = ThisWorkbook SheetExists = CBool ​​(Len (Sheets (SName) .Name)) Afslut funktion 

Nu er makrokoden indstillet; vi kører makroen “CopyUsedRange”, og det vil indsætte et nyt ark “Master” og kopiere dataene fra hvert ark.

Konklusion:Kopiering af data fra flere ark er en manuel opgave; imidlertid; med ovenstående kode kan vi konsolidere data med et enkelt klik på en makro.

Hvis du kunne lide vores blogs, kan du dele den med dine venner på Facebook. Og også du kan følge os på Twitter og Facebook.

Vi vil meget gerne høre fra dig, lad os vide, hvordan vi kan forbedre, supplere eller innovere vores arbejde og gøre det bedre for dig. Skriv til os på e -mail -stedet