Jos käsittelet useita arkkeja kerralla ja haluat kopioida tiedot jokaisesta taulukosta päälaskentataulukkoon, sinun kannattaa lukea tämä artikkeli. Käytämme VBA -koodin nykyisen alueen ominaisuutta kaikkien laskentataulukoiden tietojen yhdistämiseen yhdeksi arkiksi. Tämä ominaisuus on hyödyllinen monille toiminnoille, jotka laajentavat valinnan automaattisesti kattamaan koko nykyisen alueen, kuten automaattisen muotoilun menetelmä. Tätä ominaisuutta ei voi käyttää suojatussa laskentataulukossa.
Ehto on: jokaisen taulukon tulee sisältää samanlainen muoto eli sama määrä sarakkeita; samaa muotoa käyttämällä voimme yhdistää tarkasti tietoja.
Huomaa: tämä artikkeli osoittaa VBA -koodin käytön; jos sarakkeiden lukumäärä jostain syystä vaihtelee jossakin taulukossa, koko yhdistetyt tiedot eivät anna tarkkaa kuvaa. On erittäin suositeltavaa käyttää yhtä monta saraketta. VBA -koodi lisää uuden taulukon työkirjaan ja kopioi ja liitä tiedot jokaisen arkin jälkeen ilman korvausta.
Otetaan esimerkki kolmesta arkista, nimittäin tammikuu, helmi ja maaliskuu. Seuraavassa on otos näistä arkeista:
Jotta voimme yhdistää kaikkien arkkien tiedot yhdeksi arkiksi, 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 CopyCurrentRegion () 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 sh: lle tässä työkirjassa. Solut (viimeinen + 1, 1) päättyvät, jos päättyvät, jos seuraava sovellus.ScreenUpdating = Todellinen loppu alikopio CopyCurrentRegionValues () Dim sh laskentataulukkona Dim DestSh laskentataulukkona Dim viimeisenä niin kauan kuin SheetExists ("Master") = True Sitten MsgBox "Arkki Master on jo olemassa "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) Sh.Range ("A1"). CurrentRegion DestSh.Cells (Last + 1, 1) .Resize (.Rows.Count, _ .Columns.Count) .Value = .Arvo päättyy loppuun, jos loppuu, jos seuraava sovellus. ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False). ) Virheessä Jatka seuraavaksi Lastcol = sh.Cells.Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns , _ SearchDirection: = xlPrevious, _ MatchCase: = False) .Column 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) .Name)) End Function
CopyCurrentRegion -makro kutsuu "SheetExists" -toimintoa ja tarkistaa, onko laskentataulukon nimi "Master"; jos se löydetään, se ei tee mitään, muuten se lisää uuden laskentataulukon aktiiviseen työkirjaan ja nimeää sen uudelleen päälliköksi ja kopioi sitten tiedot kaikista arkeista.
Seuraavassa on tilannekuvia yhdistetyistä tiedoista:
Huomautus: Esimerkkityökirja sisältää Master -laskentataulukon; on suositeltavaa poistaa Master -laskentataulukko ja suorittaa makro, jotta VBA -koodi toimii.
Johtopäätös:Nyt meillä on koodi, jonka avulla voimme siirtää tietoja jokaisesta laskentataulukosta yhdelle arkille.
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