Apvienojiet/apvienojiet vairākas darblapas vienā galvenajā lapā, izmantojot VBA

Anonim

Dažreiz mēs vēlamies apvienot vairākas lapas vienā lapā, lai mēs varētu viegli analizēt datus un pārvērst tos par noderīgu informāciju. Šie raksti jums pateiks, kā apvienot vairākas darblapas vienā darblapā, izmantojot VBA.
Piemērs:

Šeit es esmu ielādējis dažus datus no servera, kas atgriež datus dažādās darblapās. Esmu pievienojis vēl vienu lapu un nosaucis to par “meistaru”. Citi lapu nosaukumi nav svarīgi.
Tagad palaidiet šo makro.

Sub Merge_Sheets () Dim Dimension StartRow, startCol, lastRow, lastCol As Long Dim headers As Range 'Iestatīt pamatlapu konsolidācijai Set mtr = Worksheets ("Master") Set wb = ThisWorkbook' Get Headers Set headers = Application.InputBox ("Izvēlieties Galvenes ", tips: = 8) 'Kopēt galvenes galvenajās galvenēs.Kopēt mtr.Range (" A1 ") startRow = headers.Row + 1 startCol = headers.Column Debug.Print startRow, startCol' cilpa caur visām lapām Katrai ws In wb.Worksheets 'izņemot galveno lapu no cilpas If ws.Name "Master" Tad ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Cells (startRow, Columns.Count). Beigas (xlToLeft). Kolonna "iegūst datus no katras darblapas un kopē tos galvenās lapas diapazonā (šūnas (startRow, startCol), šūnas (lastRow, lastCol)). Kopēt _ mtr.Range (" A "& mtr.Cells (Rows .Count, 1) .End (xlUp). Rinda + 1) End If Next ws darblapas ("Master"). Aktivizēt End Sub 

Kā apvienot lapas, izmantojot šo VBA makro?

  1. Ievietojiet jaunu lapu un nosauciet to “Master” darbgrāmatā. Ja vēlaties, pārdēvējiet to vēlāk.
  2. Ievietojiet moduli VBA redaktorā un nokopējiet virs VBA koda.
  3. Palaidiet makro.
  4. Jums tiks lūgts izvēlēties virsrakstus. Atlasiet virsrakstu un noklikšķiniet uz Labi.

Un tas tiek darīts. Visas lapas ir apvienotas šablonā.

Kā tas strādā?
Es pieņemu, ka jūs zināt objektu un mainīgo veidošanas pamatus VBA. pirmajā daļā mēs esam izveidojuši objektu un mainīgos, kas mums būs nepieciešami mūsu darbībā.

Nu lielāko daļu lietu esmu izskaidrojis, izmantojot komentārus vba kodā. Apskatīsim šī vba koda galveno daļu.

Par katru ws In wb.Worksheets ', izņemot galveno lapu no cilpas Ja ws.Nosaukums "Master" Tad ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Šūnas (startRow, Columns). Count) .End (xlToLeft) .Column 'iegūst datus no katras darblapas un iekopē tos Master Sheet Range (šūnas (startRow, startCol), šūnas (lastRow, lastCol)). Kopēt _ mtr.Range ("A" & mtr. Šūnas (Rows.Count, 1). End (xlUp). Rinda + 1) Beigt, ja nākamā ws

Iepriekšējos rakstos mēs uzzinājām, kā cilpot lapas un kā iegūt pēdējo rindu un kolonnu, izmantojot vba.

Šeit mēs aplūkojam katru galveno darbgrāmatas lapu, izmantojot cilpu.
Katram ws In wb. Darblapas

Pēc tam mēs izslēdzam “galveno” lapu no cilpām, jo ​​mēs konsolidēsim savus datus šajā lapā.

Tad mēs iegūstam pēdējās rindas un pēdējās kolonnas numuru.

Tagad nākamā rinda ir ļoti svarīga. Mēs esam veikuši vairākas darbības vienā rindā.
Diapazons (šūnas (startRow, startCol), šūnas (lastRow, lastCol)). Kopēt _
mtr.Range ("A" & mtr.Cells (Rows.Count, 1) .End (xlUp). Rinda + 1)

Vispirms mēs veidojam diapazonu, izmantojot startRow, startCol un lastRow un lastCol.

Diapazons (šūnas (startRow, startCol), šūnas (lastRow, lastCol)) Mēs to esam nokopējuši, izmantojot diapazona kopēšanas metodi. Diapazons (šūnas (startRow, startCol), šūnas (lastRow, lastCol)). Kopēt Mēs to ielīmējām tieši pirmajā tukšajā šūnā pēc pēdējās tukšās šūnas pamatlapas A slejā (mtr.Cells (Rows.Count, 1). End (xlUp). Rinda + 1). Diapazons (šūnas (startRow, startCol), šūnas (lastRow, lastCol)). Kopēt _ mtr.Range ("A" & mtr.Cells (Rows.Count, 1). End (xlUp). Row + 1)

Šī cilpa darbojas visām lapām un kopē katras lapas datus galvenajā lapā.

Visbeidzot, makro beigās mēs aktivizējam galveno lapu, lai redzētu rezultātu.

Tātad, jā, puiši, šādi varat apvienot katru darbgrāmatas lapu. Paziņojiet man, ja jums ir kādi jautājumi par šo VBA kodu vai kādu Excel tēmu zemāk esošajā komentāru sadaļā.
Lejupielādēt failu:

Konsolidēt_Merge vairākas darblapas vienā galvenajā lapā, izmantojot VBA

Saistītie raksti:

Kā pārvietoties pa loksnēm

kā iegūt pēdējo rindu un kolonnu, izmantojot vba

Izdzēsiet lapas bez apstiprinājuma uzvednēm, izmantojot Microsoft Excel VBA

Pievienojiet un saglabājiet jaunu darbgrāmatu, izmantojot VBA programmā Microsoft Excel 2016

Parādiet ziņojumu Excel VBA statusa joslā

Izslēdziet brīdinājuma ziņojumus, izmantojot VBA programmā Microsoft Excel 2016

Populāri raksti:

Funkcija VLOOKUP programmā Excel

COUNTIF programmā Excel 2016

Kā lietot SUMIF funkciju programmā Excel