Om du vill kopiera det använda intervallet för varje kalkylblad till huvudark bör du läsa den här artikeln. Vi kommer att använda VBA -kod för att kopiera data från varje kalkylblad och sedan klistra in i ett annat blad utan att skriva över.
Makrot lägger till ett blad med namnet Master i din arbetsbok och kopierar cellerna från varje blad i din arbetsbok i det här kalkylbladet.
Det första makrot gör en normal kopia och det andra makrot kopierar värdena. Makrons subs använder funktionerna nedan; makron fungerar inte utan funktionerna.
Följande är ögonblicksbilden av data från Sheet1 & Sheet2:
Vi måste följa stegen nedan för att starta VB -editor:
- Klicka på fliken Utvecklare
- Välj Visual Basic i kodgruppen
- Kopiera koden nedan 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 exist" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh .Name = "Master" för varje 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 existent" Exit Sub End Om Application.ScreenUpdating = False Ställ in DestSh = Worksheets.Add DestSh.Name = "Master" för varje sh i ThisWorkbook.Worksheets If sh.Name DestSh.Name Sedan If sh.UsedRange.Count> 1 Then Last = LastRow (DestSh) With sh.UsedRange DestSh.Cells (Sista + 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) .Row On Error GoTo 0 Avsluta funktion Funktion Lastcol (sh som arbetsblad) På fel Återuppta Nästa Lastcol = sh.Cells .Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlPrevious, _ MatchCase: = Falsk) .Kolumn vid fel Gå till 0 Avsluta funktion FunktionsarkExister (SName som sträng, _ Valfritt ByVal WB som arbetsbok) Som Boolean vid fel Återuppta nästa om WB inte är något, ställ sedan in WB = ThisWorkbook SheetExists = CBool (Len (Sheets (SName) .Name)) Slutfunktion
Nu är makrokoden inställd; vi kommer att köra makrot "CopyUsedRange" och det kommer att infoga ett nytt blad "Master" och kopiera data från varje ark.
Slutsats:Kopiering av data från flera blad är en manuell uppgift; dock; med ovanstående kod kan vi konsolidera data med ett enda klick på ett makro.
Om du gillade våra bloggar, dela den med dina vänner på Facebook. Och du kan också följa oss på Twitter och Facebook.
Vi vill gärna höra från dig, låt oss veta hur vi kan förbättra, komplettera eller förnya vårt arbete och göra det bättre för dig. Skriv till oss på e -postwebbplatsen