Kopier UsedRange av hvert ark til ett ark ved hjelp av VBA i Microsoft Excel

Anonim

Hvis du vil kopiere det brukte området for hvert regneark til hovedark, bør du lese denne artikkelen. Vi bruker VBA -kode til å kopiere dataene fra hvert regneark og deretter lime inn i et nytt ark uten å overskrive.

Makroen legger til et ark med navnet Master i arbeidsboken din og kopierer cellene fra hvert ark i arbeidsboken i dette regnearket.

Den første makroen kopierer en normal og den andre makroen kopierer verdiene. Makroens subs bruker funksjonene nedenfor; makroen fungerer ikke uten funksjonene.

Følgende er øyeblikksbildet av data fra Sheet1 & Sheet2:

Vi må følge trinnene nedenfor for å starte VB -editor:

  • Klikk på kategorien Utvikler
  • Velg Visual Basic fra kodegruppen

  • Kopier koden nedenfor i standardmodulen
Sub CopyUsedRange () Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long If SheetExists ("Master") = True Then MsgBox "Sheet Master exist already" 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 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) With sh.UsedRange DestSh.Cells (Siste + 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) .Rad på feil Gå til 0 Avslutt funksjon Funksjon Lastcol (sh Som regneark) På feil Gjenoppta Neste Lastcol = sh.Cells .Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlPrevious, _ MatchCase: = Falsk) .Kolonne ved feil GoTo 0 Avslutt funksjon Funksjon SheetExists (SName As String, _ Valgfritt ByVal WB som arbeidsbok) Som Boolean på Error Resume Next Hvis WB ikke er noe så sett WB = ThisWorkbook SheetExists = CBool ​​(Len (Sheets (SName) .Name)) Sluttfunksjon 

Nå er makrokoden satt; vi vil kjøre makroen "CopyUsedRange", og det vil sette inn et nytt ark "Master" og kopiere dataene fra hvert ark.

Konklusjon:Kopiering av data fra flere ark er en manuell oppgave; derimot; med koden ovenfor kan vi konsolidere data med et enkelt klikk på en makro.

Hvis du likte bloggene våre, del den med vennene dine på Facebook. Og du kan også følge oss på Twitter og Facebook.

Vi vil gjerne høre fra deg, gi oss beskjed om hvordan vi kan forbedre, utfylle eller innovere arbeidet vårt og gjøre det bedre for deg. Skriv til oss på e -post