Při práci s různými zdroji dat můžete mít často potíže se sestavením více sešitů a listů, než se dostanete k jednomu konečnému datovému dílu. Představte si situaci, kdy máte několik stovek sešitů ke spojení, než vůbec začnete svůj den.

Nikdo nechce trávit nekonečné hodiny prací na různých zdrojích, otevíráním každého sešitu, kopírováním a vkládáním dat z různých listů, než nakonec vytvoří jeden konsolidovaný sešit. Co když to za vás může udělat makro VBA?

Pomocí této příručky si můžete vytvořit svůj vlastní kód makra Excel VBA pro konsolidaci více sešitů, to vše během několika minut (pokud je datových souborů hodně).

Předpoklady pro vytvoření vlastního kódu makra VBA

Pro uložení kódu VBA potřebujete jeden sešit, zatímco ostatní sešity se zdrojovými daty jsou samostatné. Navíc vytvořte jeden sešit Konsolidované k ukládání konsolidovaných dat ze všech vašich sešitů.

Vytvořte složku Konsolidace na vámi preferovaném místě, kde si uložíte všechny zdrojové sešity. Když se makro spustí, bude procházet každým sešitem uloženým v této složce, zkopíruje obsah z různých listů a umístí jej do konsolidovaného sešitu.

instagram viewer

Vytvoření vlastního kódu Excel VBA

Jakmile jsou nezbytné předpoklady z cesty, je čas ponořit se do kódu a začít hackovat základy, abyste jej přizpůsobili vašim požadavkům.

Příbuzný: Pokročilé funkce aplikace Microsoft Excel, které musíte znát

zmáčkni Alt+F11 na Excel otevřete editor kódu maker VBA. Vložte níže napsaný kód a uložte soubor jako sešit s podporou maker (.xlsm rozšíření).

Dílčí openfiles()

'deklarovat proměnné používané v kódu VBA

Dim MyFolder As String, MyFile As String, wbmain As Workbook, Lastrow As Long

'zakažte tyto funkce, abyste zlepšili zpracování kódu

S aplikací
.DisplayAlerts = False
.ScreenUpdating = False
Konec s

'změňte cestu ke složce, kam se budou soubory ukládat

MyFolder = InputBox("Zadejte cestu ke složce Consolidation") & "\"

'definujte odkaz na složku v proměnné makra

MyFile = Dir (MyFolder)

'otevřít smyčku pro procházení každým jednotlivým sešitem uloženým ve složce

Do While Len (MyFile) > 0

'aktivujte sešit Konsolidace

Windows("Konsolidace").Aktivovat

'vypočítejte poslední obsazený řádek

Rozsah("a1048576").Vyberte
Výběr. Konec (xlUp). Vyberte
ActiveCell. Offset (1, 0). Vyberte

'otevřete první sešit ve složce Konsolidace

Pracovní sešity. Otevřít Filename:=MyFolder & MyFile

Windows (MyFile).Aktivovat

'přepínat mezi jednotlivými listy v sešitech a kopírovat data

Dim ws As Worksheet
Pro každý ws In Sheets

ws. aktivovat
ws. AutoFilterMode = False

'ignorujte záhlaví a zkopírujte data z řádku 2
If Cells (2, 1) = "" Pak Přejít na 1

Přejít na 10

1: Další

10: Range("a2:az20000").Kopírovat

Windows("Konsolidace").Aktivovat

'vložte zkopírovaný obsah

ActiveSheet. Vložit

Windows (MyFile).Aktivovat

'po vložení dat zavřete otevřený sešit

Aktivní sešit. Zavřít

'vyprázdněte mezipaměť pro uložení hodnoty dalšího sešitu

Můj soubor = Dir()

'otevřít další soubor ve složce

Smyčka

'povolit zakázané funkce pro budoucí použití

S aplikací
.DisplayAlerts = True
.ScreenUpdating = Pravda
Konec s

End Sub

Vysvětlení kódu VBA

První část kódu definuje podprogram, který obsahuje veškerý váš kód VBA. Definujte podprogram pomocí sub, za kterým následuje název kódu. Podnázev může být jakýkoli; v ideálním případě byste si měli ponechat jméno relevantní pro kód, který se chystáte napsat.

Příbuzný: Webové stránky a blogy, kde se dozvíte tipy a triky pro Excel

Excel VBA rozumí proměnným vytvořeným uživatelem a jejich odpovídajícím datovým typům deklarovaným pomocí ztlumit (dimenze).

Chcete-li zvýšit rychlost zpracování kódu, můžete vypnout aktualizaci obrazovky a potlačit všechna upozornění, protože to zpomaluje provádění kódu.

Uživatel bude vyzván k zadání cesty ke složce, kde jsou uloženy datové soubory. Vytvoří se smyčka pro otevření každého sešitu uloženého ve složce, zkopírování dat z každého listu a jejich připojení k Konsolidace pracovní sešit.

Sešit Konsolidace je aktivován, aby Excel VBA mohl vypočítat poslední vyplněný řádek. Vybere se poslední buňka v listu a poslední řádek se vypočítá v sešitu pomocí funkce odsazení. To je velmi užitečné, když makro začne připojovat data ze zdrojových souborů.

Jakmile smyčka otevře první zdrojový soubor, filtry se odstraní z každého jednotlivého listu (pokud ano existují) a data v rozsahu od A2 do AZ20000 budou zkopírována a vložena do konsolidace pracovní sešit.

Proces se opakuje, dokud nejsou všechny listy sešitu připojeny do hlavního sešitu.

Příbuzný: Nejlepší online kurzy pro zvládnutí pokročilého Excelu

Nakonec se zdrojový soubor po vložení všech dat zavře. Otevře se další sešit, takže makro VBA může opakovat stejné kroky pro další sadu souborů.

Smyčka je kódována tak, aby běžela, dokud nebudou všechny soubory automaticky aktualizovány v hlavním sešitu.

Uživatelská přizpůsobení

Někdy se nechcete starat o vestavěné výzvy, zvláště pokud jste koncovým uživatelem. Pokud byste raději napevno zakódovali cestu ke složce Consolidation v kódu, můžete změnit tuto část kódu:

MyFolder = InputBox("Zadejte cestu ke složce Consolidation") & "\"

Na:

MyFolder = „Cesta ke složce“ & „\“

Kromě toho můžete také změnit odkazy na sloupce, protože tento krok není součástí tohoto kódu. Stačí nahradit odkaz na koncový sloupec hodnotou posledního vyplněného sloupce (v tomto případě AZ). Je třeba si uvědomit, že poslední vyplněný řádek se vypočítává pomocí kódu makra, takže je třeba změnit pouze odkaz na sloupec.

Chcete-li toto makro využít na maximum, můžete jej použít pouze ke konsolidaci sešitů ve stejném formátu. Pokud jsou struktury odlišné, nemůžete toto makro VBA použít.

Konsolidace více sešitů pomocí makra Excel VBA

Vytváření a úpravy kódu VBA aplikace Excel je poměrně snadné, zvláště pokud rozumíte některým nuancím v kódu. VBA systematicky prochází každý řádek kódu a provádí jej řádek po řádku.

Pokud v kódu provedete nějaké změny, musíte zajistit, abyste nezměnili pořadí kódů, protože by to narušilo provádění kódu.

5 Skvělá makra Microsoft Excel pro třídění dat

Udělejte ze správy dat hračku s těmito makry aplikace Excel.

Přečtěte si další

PodíltweetE-mailem
Související témata
  • Programování
  • Programování
  • Microsoft Excel
O autorovi
Gaurav Siyal (19 zveřejněných článků)

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.

Více od Gaurava Siyala

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