Excel VBA je nedílnou součástí automatizace Excelu a použití a výhody jazyka VBA nelze podkopat. Pokud jste v těžké bitvě při pokusu o konsolidaci více listů a sešitů v Excelu, jsme tu, abychom vám pomohli.
Makra zmíněná v této příručce vám pomohou dosáhnout zdánlivě nepřekonatelného úkolu během několika sekund (nebo minut, pokud jsou datová aktiva velká).
Podle tohoto návodu si vytvoříte vlastní makro VBA v Excelu a efektivně sloučíte více listů do jednoho souboru.
Sloučení více listů aplikace Excel do jednoho souboru
Pro tento úkol jsou data uložena v následujících listech:
- List1
- List2
- List3
Výše uvedené názvy listů jsou pouze ilustrativní. Toto makro VBA je obecné a nezávisí na názvech listů; kód můžete přizpůsobit tak, aby byl použit s libovolným názvem listu (jmény).
Předpoklady pro spuštění kodexu
Níže jsou uvedeny některé předpoklady pro spuštění kódu VBA.
Kód makra musíte uložit do nového souboru aplikace Excel. Uložte tento sešit s a .xlsm rozšíření. Sešit maker VBA můžete uložit s libovolným názvem.
Otevřete nový soubor Excel; lis Alt + F11 na klávesnici otevřete editor Excel VBA. Jakmile se editor otevře, přidejte nový modul kódu kliknutím na Vložit záložka nahoře. Vybrat Modul vložit nový modul; zde budete zadávat níže uvedený kód makra VBA.
Údaje, které mají být konsolidovány, by měly být v jiném samostatném sešitu. Název sešitu a listů může být libovolný.
Jakmile spustíte kód VBA, makro VBA bude procházet každým dostupným listem v primární sešit (datový sešit) a vložte obsah do nově přidaného listu v něm pracovní sešit.
Konsolidovaná data budou k dispozici na pojmenovaném listu Konsolidované.
Spuštění kódu VBA
Je čas spustit nově uložený kód makra. Zkopírujte a vložte tento kód do modulu editoru VBA:
Dílčí konsolidace_shts()
'deklarujte různé proměnné používané v kódu a datové typy vba
Dim sht As Worksheet, sht1 As Worksheet, lastrow As Integer, lastrow1 As Integer
'zakázat blikání obrazovky a vyskakovací okna během provádění
S aplikací
.ScreenUpdating = False
.DisplayAlerts = False
Konec s
'uložte název primárního sešitu do proměnné makra. Nahraďte Test.xlsx názvem primárního sešitu
Set wbk1 = Workbooks("Test.xlsx")
'aktivujte sešit před provedením funkcí na něm
wbk1.Aktivovat
'spusťte smyčku vba for a zkontrolujte, zda již existuje konsolidovaný list. Pokud existuje, cyklus for jej odstraní.
Pro každý sht v wbk1.Sheets
Pokud sht. Jméno = "Konsolidované" Pak sht. Vymazat
Další sht
'Přidat nový list pro uložení nově konsolidovaných dat
Pracovní listy. Přidat. Název = "Konsolidované"
'Přidejte záhlaví do každého jednotlivého sloupce v konsolidovaném listu
S listy ("Konsolidované")
.Range("a1").Value = "Datum objednávky"
.Range("b1").Value = "Region"
.Range("c1").Value = "Rep"
.Range("d1").Value = "Item"
.Range("e1").Value = "Jednotky"
.Range("f1").Value = "UnitCost"
.Range("g1").Value = "Total"Konec s
„Nově vytvořený konsolidovaný list bude obsahovat konsolidovaná data z každého jednotlivého listu v primárním sešituPro i = 1 To wbk1.Worksheets. Počet
If Sheets (i).Name <> "Consolidated" Then
'Zachyťte poslední vyplněný řádek z datových listů v sešitu
lastrow = Sheets (i).Range("a1").End (xlDown).Row
'Zachyťte poslední vyplněný řádek v konsolidovaném listu
lastrow1 = wbk1.Sheets("Consolidated").Range("a1048576").End (xlUp).Row + 1'Zkopírujte data ze zdrojového listu a vložte je do konsolidovaného listu
Sheets (i).Range("a2:g" & lastrow).Copy Destination:=Sheets("Consolidated").Range("a" & lastrow1)
End If
Příště já
'Povolit funkce Excel VBA pro budoucí použití
S aplikací
.ScreenUpdating = Pravda
.DisplayAlerts = True
Konec s
End Sub
Vysvětlení kódu VBA
Nejprve deklarujte všechny proměnné, které v kódu používáte, a přiřaďte jim správné datové typy VBA, aby kód fungoval bez problémů.
Jakmile deklarujete proměnné, je potřeba provést základní údržbu. To se provádí deaktivací blikání obrazovky a potlačením vyskakovacích upozornění. Když například odstraníte existující list pomocí kódu VBA, před odstraněním listu vás Excel požádá o potvrzení. Výzvy, jako je tato, jsou potlačeny, aby se zvýšila rychlost provádění.
V dalším kroku je potřeba definovat název sešitu, který obsahuje všechna vaše data. Nahradit Test.xlsx s názvem a příponou názvu vašeho sešitu. Ujistěte se, že jste jméno obklopili uvozovkami.
Aktivujte primární sešit a odstraňte všechny existující listy s názvem Konsolidované k odstranění dříve uložených dat. Kód VBA přepíná mezi každým listem a jakmile narazí na název listu Konsolidované smaže to. To se provádí pomocí Příkaz VBA IF, který zkontroluje logické podmínky a vymaže list, jakmile je podmínka splněna.
Do primárního sešitu se přidá nový list pro uložení konsolidovaných dat. Následně jsou k tomuto listu přidány předformátované, standardizované záhlaví. Hodnoty názvů (záhlaví sloupců) můžete změnit aktualizací informací vedle odkazů na buňky v uvozovkách.
Například: .Range(“a1”) = “Datum objednávky” lze nahradit s .Range(“a1”) = “Číslo objednávky”
Dále smyčka VBA FOR přepíná každý list, zkopíruje obsah listu a vloží obsah do Konsolidované pracovní list před přechodem na další list v sešitu. Tento proces se opakuje, dokud nejsou zkopírovány všechny listy.
Během tohoto procesu se automaticky vypočítají všechny řádky a vloží se do konsolidovaného listu. Před vložením dat se automaticky vypočítá poslední vyplněný řádek. Makro je dynamické a může se přizpůsobit různým datovým řádkům v každém listu.
Příbuzný: Pokročilé funkce aplikace Microsoft Excel, které musíte znát
Jakmile jsou data ze všech listů vložena do hlavního konsolidačního listu, makro se přesune do poslední části kódu. Funkce VBA, které byly původně deaktivovány, jsou znovu povoleny pro budoucí použití.
Konsolidace více listů pomocí makra Excel VBA
Excel VBA je nadbytečný programovací jazyk, který dobře funguje se všemi komponenty Excelu. Každá část kódu je nezbytná a je důležité si uvědomit, že provádění závisí na systému provádění řádek po řádku, takže byste neměli měnit pořadí řádků kódu.
Chcete-li přizpůsobit kód svým požadavkům, můžete provést požadované změny a spustit tento kód, abyste data efektivně a efektivně konsolidovali během několika sekund.
Udělejte ze správy dat hračku s těmito makry aplikace Excel.
Přečtěte si další
- Programování
- Microsoft Excel
- Makra
- Programování
Gaurav Siyal má dva roky zkušeností s psaním, psaním pro řadu digitálních marketingových firem a dokumentů životního cyklu softwaru.
Přihlaste se k odběru našeho newsletteru
Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné e-knihy a exkluzivní nabídky!
Chcete-li se přihlásit k odběru, klikněte sem