Skopírujte pole Použitý rozsah každého listu do jedného listu pomocou jazyka VBA v programe Microsoft Excel

Anonim

V prípade, že chcete skopírovať použitý rozsah každého pracovného hárka do predlohy, mali by ste si prečítať tento článok. Na kopírovanie údajov z každého pracovného hárka použijeme kód VBA a potom ho vložíme do iného listu bez prepísania.

Makro pridá do vášho zošita list s názvom Hlavný a skopíruje bunky z každého listu vo vašom zošite v tomto pracovnom hárku.

Prvé makro urobí normálnu kópiu a druhé makro skopíruje hodnoty. Subprogramy makier používajú nižšie uvedené funkcie; makrá nebudú fungovať bez funkcií.

Nasleduje prehľad údajov z hárkov Sheet1 a Sheet2:

Na spustenie editora VB musíme vykonať nasledujúce kroky:

  • Kliknite na kartu Vývojár
  • V skupine Kód vyberte položku Visual Basic

  • Skopírujte nižšie uvedený kód do štandardného modulu
Sub CopyUsedRange () Dim sh as Asheet Dim Dim DestSh As worksheet Dim Last As Long If SheetExists ("Master") = True Then MsgBox "The sheet Master already exist" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh .Name = "Master" pre každý sh In 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 "The sheet master already exist" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name = "Master" For each sh In 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 = Podradená funkcia True End LastRow (hárok ako pracovný list) Pri chybe Pokračovať Ďalej LastRow = sh.Cells.Find (Čo: = "*", _ Potom: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False). Riadok pri chybe GoTo 0 Koniec Funkcia Funkcia Lastcol (list ako pracovný list) Pri chybe Pokračovať Ďalší Lastcol = sh.Cells .Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlPrevious, _ MatchCase: = False). Stĺpec pri chybe GoTo 0 Koniec Funkcia Funkcia SheetExists (SName ako reťazec, _ voliteľný ByVal WB ako zošit) Ako boolean pri chybe Pokračovať ďalej Ak WB nie je nič, potom nastavte WB = ThisWorkbook SheetExists = CBool ​​(Len (Sheets (SName) .Name)) Koniec funkcie 

Teraz je kód makra nastavený; spustíme makro „CopyUsedRange“ a vloží nový list „Master“ a skopíruje údaje z každého listu.

Záver:Kopírovanie údajov z viacerých listov je manuálna úloha; však; pomocou vyššie uvedeného kódu môžeme konsolidovať údaje jediným kliknutím na makro.

Ak sa vám páčili naše blogy, zdieľajte ich so svojimi priateľmi na Facebooku. A tiež nás môžete sledovať na Twitteri a Facebooku.

Radi by sme vás počuli, dajte nám vedieť, ako môžeme zlepšiť, doplniť alebo inovovať našu prácu a zlepšiť ju pre vás. Napíšte nám na emailovú stránku