Někdy chceme sloučit více listů do jednoho listu, abychom mohli data snadno analyzovat a přeměnit je na užitečné informace. Tento článek vám řekne, jak sloučit více listů do jednoho listu pomocí VBA.
Příklad:
Zde jsem přinesl nějaká data ze serveru, který vrací data do různých listů. Přidal jsem ještě jeden list a pojmenoval jej jako „Master“. Na jiných názvech listů nezáleží.
Nyní spusťte toto makro.
Sub Merge_Sheets () Dim startRow, startCol, lastRow, lastCol As Long Dim headers As Range 'Set Master sheet forsolidation Set mtr = Worksheets ("Master") Set wb = ThisWorkbook' Get Headers Set headers = Application.InputBox ("Select the Headers ", Typ: = 8) 'Zkopírujte záhlaví do hlavních záhlaví. Zkopírujte mtr.Range (" A1 ") startRow = headers.Row + 1 startCol = headers.Column Debug.Print startRow, startCol' smyčka přes všechny listy Pro každý ws Ve wb.Worksheets 'kromě hlavního listu ze smyčky If ws.Name "Master" Then ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Cells (startRow, Columns.Count). Konec (xlToLeft). Sloupec 'načte data z každého listu a zkopíruje je do rozsahu hlavního listu (buňky (startRow, startCol), buňky (lastRow, lastCol)). Kopírovat _ mtr.Range ("A" & mtr.Cells (řádky) .Count, 1). End (xlUp) .Row + 1) End If Next ws Worksheets ("Master"). Activate End Sub
Jak sloučit listy pomocí tohoto makra VBA?
- Vložte nový list a v sešitu jej pojmenujte „Hlavní“. Přejmenujte to později, pokud chcete.
- Vložte modul do editoru VBA a zkopírujte nad kód VBA.
- Spusťte makro.
- Budete požádáni o výběr nadpisů. Vyberte nadpis a stiskněte OK.
A je hotovo. Všechny listy jsou sloučeny do předlohy.
Jak to funguje?
Předpokládám, že znáte základy vytváření objektů a proměnných ve VBA. v první části jsme vytvořili objekt a proměnné, které budeme při svých operacích potřebovat.
Většina věcí, které jsem vysvětlil pomocí komentářů v kódu VBA. Podívejme se na hlavní část tohoto kódu vba.
Pro každý ws V wb.Worksheets kromě hlavního listu ze smyčky If ws.Name "Master" Then ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Cells (startRow, Columns. Count) .End (xlToLeft) .Column 'získá data z každého listu a zkopíruje je do rozsahu hlavního listu (buňky (startRow, startCol), buňky (lastRow, lastCol)). Kopírovat _ mtr.Range ("A" & mtr. Buňky (řádky. Počet, 1). Konec (xlUp). Řádek + 1) konec, pokud další w
V dřívějších článcích jsme se naučili, jak procházet listy a jak získat poslední řádek a sloupec pomocí vba.
Zde procházíme každý list v hlavním sešitu pomocí smyčky for.
Za každý ws v wb. Pracovní listy
Poté vyloučíme „hlavní“ list ze smyčky, protože v něm budeme konsolidovat naše data.
Poté získáme poslední řádek a číslo posledního sloupce.
Nyní je další řádek velmi důležitý. Provedli jsme více operací do jednoho řádku.
Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copy _
mtr.Range ("A" & mtr.Cells (Rows.Count, 1) .End (xlUp) .Row + 1)
Nejprve vytvoříme rozsah pomocí startRow, startCol a lastRow a lastCol.
Range (Cells (startRow, startCol), Cells (lastRow, lastCol)) Zkopírovali jsme jej pomocí metody kopírování rozsahu. Rozsah (buňky (startRow, startCol), buňky (lastRow, lastCol)). Kopírovat Vložili jsme ji přímo do první prázdné buňky za poslední neprázdnou buňku ve sloupci A předlohy (mtr.Cells (Rows.Count, 1) .End (xlUp). Řádek + 1). Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copy _ mtr.Range ("A" & mtr.Cells (Rows.Count, 1) .End (xlUp) .Row + 1)
Tato smyčka běží pro všechny listy a zkopíruje data každého listu do hlavního listu.
Nakonec na konci makra aktivujeme předlohu, abychom viděli výstup.
Takže ano, lidi, takto můžete sloučit každý list v sešitu. Dejte mi vědět, pokud máte jakýkoli dotaz týkající se tohoto kódu VBA nebo jakéhokoli tématu aplikace Excel v sekci komentáře níže.
Stáhnout soubor:
Související články:
Jak procházet listy
jak získat poslední řádek a sloupec pomocí vba
Odstraňte listy bez výzev k potvrzení pomocí VBA v aplikaci Microsoft Excel
Přidat a uložit nový sešit pomocí jazyka VBA v aplikaci Microsoft Excel 2016
Zobrazit zprávu na stavovém řádku aplikace Excel VBA
Vypněte varovné zprávy pomocí VBA v aplikaci Microsoft Excel 2016
Oblíbené články:
Funkce VLOOKUP v Excelu
COUNTIF v aplikaci Excel 2016
Jak používat funkci SUMIF v aplikaci Excel