Noen ganger ønsker vi å slå sammen flere ark til ett ark slik at vi enkelt kan analysere dataene og gjøre dem om til nyttig informasjon. Denne artikkelen vil fortelle deg hvordan du slår sammen flere regneark til ett regneark ved hjelp av VBA.
Eksempel:
Her har jeg hentet noen data fra serveren som returnerer data til forskjellige regneark. Jeg har lagt til et ark til og kalt det som "Master". Andre arknavn spiller ingen rolle.
Kjør nå denne makroen.
Sub Merge_Sheets () Dim startRow, startCol, lastRow, lastCol As Long Dim headers As Range 'Set Master sheet for consolidation Set mtr = Worksheets ("Master") Set wb = ThisWorkbook' Get Headers Set headers = Application.InputBox ("Velg Overskrifter ", Type: = 8) 'Kopier overskrifter til hovedoverskrifter. Kopier mtr.Range (" A1 ") startRow = headers.Row + 1 startCol = headers.Column Debug.Print startRow, startCol' loop gjennom alle arkene for hver ws I wb.Worksheets 'bortsett fra hovedarket fra looping Hvis ws.Name "Master" Så ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Cells (startRow, Columns.Count). Slutt (xlToLeft) .Column 'hent data fra hvert regneark og kopier dem til hovedarkområde (celler (startRow, startCol), celler (lastRow, lastCol)). Kopier _ mtr.Range ("A" & mtr.Cells (rader .Telling, 1). Slutt (xlUp) .Rad + 1) Slutt hvis neste er regneark ("Master"). Aktiver End Sub
Hvordan slå sammen ark ved hjelp av denne VBA -makroen?
- Sett inn et nytt ark og navngi det "Master" i arbeidsboken. Gi nytt navn senere hvis du vil.
- Sett inn en modul i VBA -editoren og kopier over VBA -koden.
- Kjør makroen.
- Du blir bedt om å velge overskrifter. Velg overskriften og trykk OK.
Og det er gjort. Alle arkene er slått sammen i master.
Hvordan det fungerer?
Jeg antar at du kjenner det grunnleggende for objekt og variabel skapelse i VBA. i den første delen har vi laget objekt og variabler som vi trenger i våre operasjoner.
Vel, de fleste tingene jeg har forklart ved hjelp av kommentarer i vba -kode. La oss se på hoveddelen av denne vba -koden.
For hver ws I wb.Worksheets 'bortsett fra hovedarket fra looping Hvis ws.Name "Master" Da ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Cells (startRow, Columns. Count) .End (xlToLeft) .Column 'hent data fra hvert regneark og kopier dem til Master sheet Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Kopier _ mtr.Range ("A" & mtr. Celler (Rader, Antall, 1). Slutt (xlUp) .Rad + 1) Slutt Hvis Neste ws
I tidligere artikler lærte vi hvordan du blar gjennom ark og hvordan du får siste rad og kolonne ved hjelp av vba.
Her går vi gjennom hvert ark i hovedarbeidsboken som bruker for loop.
For hver ws i wb. Arbeidsark
Deretter ekskluderer vi "master" -arket fra looping, siden vi vil konsolidere dataene våre i det arket.
Så får vi siste rad og siste kolonnenummer.
Nå er neste linje veldig viktig. Vi har utført flere operasjoner på en linje.
Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copy _
mtr.Range ("A" & mtr.Cells (Rows.Count, 1). End (xlUp) .Row + 1)
Først danner vi et område ved hjelp av startRow, startCol og lastRow og lastCol.
Range (Cells (startRow, startCol), Cells (lastRow, lastCol)) Vi har kopiert det ved å bruke kopimetoden for området. Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copy Vi limte den direkte inn i den første tomme cellen etter den siste ikke -tomme cellen i kolonne A i hovedarket (mtr.Cells (Rows.Count, 1) .End (xlUp) .Rad + 1). Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copy _ mtr.Range ("A" & mtr.Cells (Rows.Count, 1). End (xlUp) .Row + 1)
Denne sløyfen kjører for alle arkene og kopierer hver arkdata til hovedark.
Til slutt, på slutten av makroen aktiverer vi masterarket for å se utdataene.
Så ja gutta, slik kan du slå sammen hvert ark i en arbeidsbok. Gi meg beskjed hvis du har spørsmål angående denne VBA -koden eller et Excel -emne i kommentarfeltet nedenfor.
Last ned fil:
Relaterte artikler:
Slik går du gjennom ark
hvordan du får siste rad og kolonne ved hjelp av vba
Slett ark uten bekreftelsesforespørsler ved hjelp av VBA i Microsoft Excel
Legg til og lagre ny arbeidsbok ved hjelp av VBA i Microsoft Excel 2016
Vis en melding på Excel VBA -statuslinjen
Slå av advarselsmeldinger ved hjelp av VBA i Microsoft Excel 2016
Populære artikler:
VLOOKUP -funksjonen i Excel
COUNTIF i Excel 2016
Slik bruker du SUMIF -funksjonen i Excel