VBA abil saate koondada/ühendada mitu töölehte üheks põhileheks

Anonim

Mõnikord tahame liita mitu lehte üheks leheks, et saaksime andmeid hõlpsalt analüüsida ja muuta kasulikuks teabeks. Sellest artiklist saate teada, kuidas ühendada mitu töölehte üheks tööleheks VBA abil.
Näide:

Siin olen toonud mõningaid andmeid serverist, mis tagastab andmed erinevatesse töölehtedesse. Olen lisanud veel ühe lehe ja pannud sellele nime “Master”. Teiste lehtede nimed pole olulised.
Nüüd käivitage see makro.

Sub Merge_Sheets () Dim Dimension startRow, startCol, lastRow, lastCol As Long Dim Headers As Range 'Määra koondleht konsolideerimiseks Set mtr = Worksheets ("Master") Set wb = ThisWorkbook' Get Headers Set headers = Application.InputBox ("Vali Päised ", tüüp: = 8) 'Kopeerige päised pealkirjadesse. Kopeerige mtr.Range (" A1 ") startRow = päised.Rida + 1 startCol = päised.Veeru silumine. Prindi startRow, startCol' silmus läbi kõigi lehtede Iga ws In wb.Worksheets ', välja arvatud põhileht silmuse loopimisel If ws.Name "Master" Siis ws.Activate lastRow = Lahtrid (Rows.Count, startCol) .End (xlUp) .Row lastCol = Lahtrid (startRow, Columns.Count). End (xlToLeft) .Column 'saab igalt töölehelt andmed ja kopeerib need põhilehe vahemikku (Lahtrid (startRow, startCol), Lahtrid (lastRow, lastCol)). Kopeeri _ mtr.Range ("A" & mtr.Cells (Rows .Count, 1) .End (xlUp) .Rida + 1) End If Next ws töölehed ("Master"). Aktiveerige End Sub 

Kuidas lehti ühendada selle VBA makro abil?

  1. Sisestage uus leht ja nimetage see töövihikus „Master”. Soovi korral nimetage see hiljem ümber.
  2. Sisestage moodul VBA redaktorisse ja kopeerige see VBA koodi kohal.
  3. Käivitage makro.
  4. Teil palutakse valida rubriigid. Valige pealkiri ja klõpsake nuppu OK.

Ja seda tehakse. Kõik lehed ühendatakse masteriks.

Kuidas see töötab?
Eeldan, et teate VBA -s objektide ja muutujate loomise põhitõdesid. esimeses osas oleme loonud objekti ja muutujaid, mida vajame oma tegevuses.

Enamikku asju olen selgitanud vba -koodi kommentaaride abil. Vaatame selle vba -koodi põhiosa.

Iga ws jaoks wb.Worksheets ', välja arvatud põhileht silmuse loopimisel Kui ws.Nimi "Master" Siis ws.Activate lastRow = Lahtrid (Rows.Count, startCol) .End (xlUp) .Row lastCol = Lahtrid (startRow, Veerud. Count) .End (xlToLeft) .Column 'saab igalt töölehelt andmed ja kopeerib need põhilehe vahemikku (Lahtrid (startRow, startCol), Lahtrid (lastRow, lastCol)). Kopeeri _ mtr.Range ("A" & mtr. Lahtrid (ridade arv, 1). Lõpp (xlUp). Rida + 1) lõpp, kui järgmine ws

Varasemates artiklites õppisime, kuidas lehtedest läbi sõita ja kuidas vba abil viimast rida ja veergu hankida.

Siin vaatame läbi iga põhitöövihiku lehe, kasutades tsüklit.
Iga ws jaoks wb. Töölehed

Seejärel jätame põhilehe silmusest välja, kuna koondame oma andmed sellele lehele.

Siis saame viimase rea ja viimase veeru numbri.

Nüüd on järgmine rida väga oluline. Oleme teinud mitu toimingut ühele reale.
Vahemik (lahtrid (startRow, startCol), lahtrid (lastRow, lastCol)). Kopeeri _
mtr.Range ("A" & mtr.Cells (Rows.Count, 1) .End (xlUp). Rida + 1)

Esiteks moodustame vahemiku, kasutades startRow, startCol ja lastRow ning lastCol.

Vahemik (Lahtrid (startRow, startCol), Lahtrid (lastRow, lastCol)) Oleme selle kopeerinud, kasutades vahemiku kopeerimismeetodit. Vahemik (lahtrid (startRow, startCol), lahtrid (lastRow, lastCol)). Kopeeri Me kleepisime selle otse esimesele tühjale lahtrile pärast viimast tühja lahtrit põhilehe veerus A (mtr.Cells (Rows.Count, 1). End (xlUp). Rida + 1). Vahemik (lahtrid (startRow, startCol), lahtrid (lastRow, lastCol)). Kopeeri _ mtr.Range ("A" & mtr.Cells (Rows.Count, 1). End (xlUp). Rida + 1)

See tsükkel töötab kõigi lehtede jaoks ja kopeerib iga lehe andmed põhilehele.

Lõpuks aktiveerime makro lõpus väljundi nägemiseks põhilehe.

Nii et jah, poisid, nii saate töövihiku iga lehe ühendada. Andke mulle teada, kui teil on selle VBA -koodi või mõne Exceli teema kohta küsimusi allpool olevas kommentaaride osas.
Faili allalaadimine:

Konsolideeri_Merge mitu töölehte VBA abil üheks põhileheks

Seotud artiklid:

Kuidas lehti läbi loopida

kuidas vba abil viimast rida ja veergu saada

Kustutage lehed ilma kinnitusviipadeta, kasutades Microsoft Excelis VBA -d

Uue töövihiku lisamine ja salvestamine Microsoft Excel 2016 VBA abil

Kuva teade Exceli VBA olekuribal

Lülitage hoiatussõnumid välja Microsoft Excel 2016 VBA abil

Populaarsed artiklid:

Funktsioon VLOOKUP Excelis

COUNTIF Excelis 2016

Funktsiooni SUMIF kasutamine Excelis