Kopioi kunkin arkin UsedRange yhdelle arkille käyttämällä Microsoft Excelin VBA: ta

Anonim

Jos haluat kopioida kunkin laskentataulukon käytetyn alueen pääarkille, sinun kannattaa lukea tämä artikkeli. Käytämme VBA -koodia tietojen kopioimiseen jokaisesta laskentataulukosta ja liitämme sen jälkeen toiselle arkille korvaamatta.

Makro lisää työkirjaasi taulukon, jonka nimi on Master, ja kopioi tämän työkirjan työkirjasi jokaisen arkin solut.

Ensimmäinen makro kopioi normaalisti ja toinen makro kopioi arvot. Makron alaosat käyttävät alla olevia toimintoja; makro ei toimi ilman toimintoja.

Seuraavassa on tilannekuva Sheet1- ja Sheet2 -tiedoista:

Meidän on suoritettava seuraavat vaiheet VB -editorin käynnistämiseksi:

  • Napsauta Kehittäjä -välilehteä
  • Valitse koodiryhmästä Visual Basic

  • Kopioi alla oleva koodi vakiomoduuliin
Sub CopyUsedRange () Dim sh kuten laskentataulukko Dim DestSh Kuten laskentataulukko Dim Viimeinen niin kauan, jos SheetExists ("Master") = True Sitten MsgBox "Arkin päällikkö on jo olemassa" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh .Name = "Master" Jokaiselle sholle tässä työkirjassa. ) Loppu Jos loppu Jos seuraava sovellus.ScreenUpdating = Todellinen loppu Sub Sub CopyUsedRangeValues ​​() Dim sh kuten laskentataulukko Dim DestSh kuin laskentataulukko Dim viimeksi niin kauan, jos SheetExists ("Master") = True Sitten MsgBox "Arkin päällikkö on jo olemassa" Poistu alipäästä If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name = "Master" Jokaiselle sh: lle tässä työkirjassa. sh.UsedRange DestSh.Cells (Viimeinen + 1, 1) .Resize (.Rows.Count, _ .Columns.Count) .Arvo = .Arvo Lopeta End Jos End If Next Ap plication.ScreenUpdating = Todellinen loppu alitoiminto LastRow (sh laskentataulukkona) Virheessä Jatka Seuraava Viimeinen rivi = sh.Cells.Find (Mitä: = "*", _ Jälkeen: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False). .Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlEdellinen, _ MatchCase: Sarake On Error GoTo 0 End Function Function SheetExists (SName as String, _ Optional ByVal WB as Workbook) Boolean On Error Jatka seuraavaksi, jos WB ei ole mitään sitten Aseta WB = ThisWorkbook SheetExists = CBool ​​(Len (Sheets (SName) .Nimi)) Lopeta toiminto 

Makrokoodi on nyt asetettu; suoritamme makron "CopyUsedRange" ja se lisää uuden "Master" -arkin ja kopioi tiedot jokaiselta arkilta.

Johtopäätös:Tietojen kopioiminen useilta arkeilta on manuaalinen tehtävä; kuitenkin; yllä olevan koodin avulla voimme yhdistää tiedot yhdellä makron napsautuksella.

Jos pidit blogistamme, jaa se ystävillesi Facebookissa. Voit myös seurata meitä Twitterissä ja Facebookissa.

Haluaisimme kuulla sinusta, kerro meille, kuinka voimme parantaa, täydentää tai innovoida työtämme ja parantaa sitä sinulle. Kirjoita meille sähköpostitse