Sujungti/sujungti kelis darbalapius į vieną pagrindinį lapą naudojant VBA

Turinys

Kartais norime sujungti kelis lapus į vieną lapą, kad galėtume lengvai išanalizuoti duomenis ir paversti juos naudinga informacija. Šie straipsniai jums pasakys, kaip sujungti kelis darbalapius į vieną darbalapį naudojant VBA.
Pavyzdys:

Čia aš paėmiau kai kuriuos duomenis iš serverio, kuris grąžina duomenis į skirtingus darbalapius. Pridėjau dar vieną lapą ir pavadinau jį „meistru“. Kiti lapų pavadinimai nesvarbūs.
Dabar paleiskite šią makrokomandą.

Sub Merge_Sheets () Dim Dimension startRow, startCol, lastRow, lastCol As Long Dim antraštės kaip diapazonas 'Nustatykite pagrindinį lapą konsolidavimui Set mtr = Worksheets ("Master") Set wb = ThisWorkbook' Get Headers Set headers = Application.InputBox ("Pasirinkite Antraštės ", tipas: = 8) 'Kopijuoti antraštes į pagrindines antraštes.Kopijuoti mtr.Range (" A1 ") startRow = antraštės.Row + 1 startCol = antraštės.Column Debug.Print startRow, startCol' kilpa per visus lapus Kiekvienam ws „Wb.Worksheets“, išskyrus pagrindinį lapą iš kilpų Jei ws.Vardas „Master“ Tada ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Ląstelės (startRow, Columns.Count). Pabaiga (xlToLeft). Stulpelis „gauna duomenis iš kiekvieno darbalapio ir nukopijuoja juos į pagrindinio lapo diapazoną (Ląstelės (startRow, startCol), Ląstelės (lastRow, lastCol)). Kopijuoti _ mtr.Range („ A “& mtr.Cells (Rows .Skaičius, 1). Pabaiga (xlUp). Eilutė + 1) Pabaiga, jei sekantys ws darbalapiai („Pagrindinis“). Suaktyvinti pabaigos dalį 

Kaip sujungti lapus naudojant šią VBA makrokomandą?

  1. Įdėkite naują lapą ir pavadinkite jį „meistru“ darbo knygoje. Jei norite, pervardykite vėliau.
  2. Įdėkite modulį į VBA redaktorių ir nukopijuokite aukščiau esantį VBA kodą.
  3. Paleiskite makrokomandą.
  4. Jūsų bus paprašyta pasirinkti antraštes. Pasirinkite antraštę ir spustelėkite Gerai.

Ir tai daroma. Visi lapai yra sujungti į pagrindinį.

Kaip tai veikia?
Manau, kad jūs žinote objektų ir kintamųjų kūrimo pagrindus VBA. pirmoje dalyje sukūrėme objektą ir kintamuosius, kurių mums prireiks mūsų veikloje.

Na, daugumą dalykų aš paaiškinau naudodamas komentarus vba kode. Pažvelkime į pagrindinę šio vba kodo dalį.

Už kiekvieną ws In wb.Worksheets ', išskyrus pagrindinį lapą iš kilpų Jei ws.Vardas "Master" Tada ws.Activate lastRow = Ląstelės (Rows.Count, startCol) .End (xlUp) .Row lastCol = Ląstelės (startRow, Columns. Skaičiuoti). Pabaiga (xlToLeft). Stulpelis "gauna duomenis iš kiekvieno darbalapio ir nukopijuoja juos į pagrindinio lapo diapazoną (Ląstelės (startRow, startCol), Ląstelės (lastRow, lastCol)). Kopijuoti _ mtr.Range (" A "& mtr. Ląstelės (eilutės. Skaičius, 1). Pabaiga (xlUp). Eilutė + 1) pabaiga, jei sekantys ws

Ankstesniuose straipsniuose mes sužinojome, kaip perjungti lapus ir kaip gauti paskutinę eilutę ir stulpelį naudojant „vba“.

Čia mes einame per kiekvieną pagrindinės darbaknygės lapą, naudodami ciklą.
Už kiekvieną ws In wb. Darbo lapai

Tada mes neįtraukiame „pagrindinio“ lapo į ciklą, nes mes konsoliduosime savo duomenis tame lape.

Tada gauname paskutinės eilutės ir paskutinio stulpelio numerį.

Dabar kita eilutė yra labai svarbi. Mes atlikome kelias operacijas vienoje eilutėje.
Diapazonas (langeliai (startRow, startCol), langeliai (lastRow, lastCol)). Kopijuoti _
mtr.Range ("A" & mtr.Cells (Rows.Count, 1). End (xlUp). Eilutė + 1)

Pirmiausia mes sudarome diapazoną naudodami startRow, startCol ir lastRow bei lastCol.

Diapazonas (langeliai (startRow, startCol), langeliai (lastRow, lastCol)) Mes nukopijavome jį naudodami diapazono kopijavimo metodą. Diapazonas (langeliai (startRow, startCol), ląstelės (lastRow, lastCol)). Kopijuoti Įklijavome tiesiai į pirmą tuščią langelį po paskutinio tuščio langelio pagrindinio lapo A stulpelyje (mtr.Cells (Rows.Count, 1). End (xlUp). Eilutė + 1). Diapazonas (langeliai (startRow, startCol), langeliai (lastRow, lastCol)). Kopijuoti _ mtr.Range ("A" & mtr.Cells (Rows.Count, 1). End (xlUp). Row + 1)

Šios kilpos veikia visiems lapams ir nukopijuoja kiekvieno lapo duomenis į pagrindinį lapą.

Galiausiai, makrokomandos pabaigoje suaktyviname pagrindinį lapą, kad pamatytume išvestį.

Taigi taip, vaikinai, taip galite sujungti kiekvieną darbo knygos lapą. Praneškite man, jei turite klausimų apie šį VBA kodą ar bet kurią „Excel“ temą žemiau esančiame komentarų skyriuje.
Atsisiųsti failą:

Sujunkite kelis darbalapius į vieną pagrindinį lapą naudodami VBA

Susiję straipsniai:

Kaip kilpoti per lakštus

kaip gauti paskutinę eilutę ir stulpelį naudojant „vba“

Ištrinkite lapus be patvirtinimo raginimų naudodami „Microsoft Excel“ VBA

Pridėkite ir išsaugokite naują darbaknygę naudodami „Microsoft Excel 2016“ VBA

Rodyti pranešimą „Excel“ VBA būsenos juostoje

Išjunkite įspėjamuosius pranešimus naudodami VBA programoje „Microsoft Excel 2016“

Populiarūs straipsniai:

„VLOOKUP“ funkcija „Excel“

COUNTIF „Excel 2016“

Kaip naudoti „SUMIF“ funkciją „Excel“

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave