Pri práci s rôznymi zdrojmi údajov môžete mať často problémy so zostavením viacerých zošitov a hárkov, kým sa dostanete k jednému konečnému údaju. Predstavte si situáciu, že máte niekoľko stoviek pracovných zošitov, ktoré musíte skombinovať, kým vôbec začnete svoj deň.

Nikto nechce tráviť nekonečné hodiny prácou na rôznych zdrojoch, otváraním každého zošita, kopírovaním a vkladaním údajov z rôznych hárkov, kým nakoniec vytvorí jeden konsolidovaný zošit. Čo ak to za vás môže urobiť makro VBA?

Pomocou tejto príručky si môžete vytvoriť svoj vlastný kód makra Excel VBA na konsolidáciu viacerých zošitov, a to všetko v priebehu niekoľkých minút (ak je dátových súborov veľa).

Predbežné požiadavky na vytvorenie vlastného kódu makra VBA

Na uloženie kódu VBA potrebujete jeden zošit, zatiaľ čo ostatné zošity so zdrojovými údajmi sú samostatné. Okrem toho vytvorte jeden pracovný zošit Konsolidované na ukladanie konsolidovaných údajov zo všetkých vašich zošitov.

Vytvorte priečinok Konsolidácia na uprednostňované miesto na uloženie všetkých zdrojových zošitov. Keď sa makro spustí, bude prepínať každý zošit uložený v tomto priečinku, skopírovať obsah z rôznych hárkov a umiestniť ho do konsolidovaného zošita.

instagram viewer

Vytvorenie vlastného kódu Excel VBA

Akonáhle sú nevyhnutné predpoklady z cesty, je čas ponoriť sa do kódu a začať hackovať základy, aby ste ho prispôsobili vašim požiadavkám.

Súvisiace: Pokročilé funkcie programu Microsoft Excel, ktoré musíte poznať

Stlačte tlačidlo Alt+F11 na Excel otvoríte editor kódu makra VBA. Prilepte kód napísaný nižšie a uložte súbor ako zošit s podporou makier (.xlsm predĺženie).

Sub openfiles()

'deklarujte premenné používané v kóde VBA

Dim MyFolder as String, MyFile As String, wbmain As Workbook, lastrow As Long

'zakázať tieto funkcie, aby sa zlepšilo spracovanie kódu

S aplikáciou
.DisplayAlerts = False
.ScreenUpdating = False
Koniec s

'zmeniť cestu k priečinku, do ktorého sa budú ukladať vaše súbory

MyFolder = InputBox("Zadajte cestu k priečinku konsolidácie") & "\"

'definovať odkaz na priečinok v premennej makra

MyFile = Dir (MyFolder)

'otvorte slučku, aby ste mohli prechádzať každým jednotlivým zošitom uloženým v priečinku

Urobiť Kým Len (MyFile) > 0

'aktivovať zošit Konsolidácia

Windows("Konsolidácia").Aktivovať

'vypočítajte posledný vyplnený riadok

Rozsah("a1048576").Vyberte
Výber. Koniec (xlUp).Vyberte
ActiveCell. Offset (1, 0). Vyberte

'otvorte prvý zošit v priečinku Konsolidácia

Pracovné zošity. Open Filename:=MyFolder & MyFile

Windows (MyFile).Aktivovať

'prepínajte medzi jednotlivými hárkami v zošitoch a kopírujte údaje

Dim ws As Worksheet
Pre každé ws In Sheets

ws. Aktivovať
ws. AutoFilterMode = False

'ignorujte hlavičku a skopírujte údaje z riadku 2
Ak bunky (2, 1) = "" Potom prejdite na 1

Prejsť na 10

1: Ďalej

10: Range("a2:az20000").Kopírovať

Windows("Konsolidácia").Aktivovať

'prilepte skopírovaný obsah

ActiveSheet. Prilepiť

Windows (MyFile).Aktivovať

'po vložení údajov zatvorte otvorený zošit

Aktívny zošit. Zavrieť

'vyprázdniť vyrovnávaciu pamäť, aby sa uložila hodnota ďalšieho zošita

MyFile = Dir()

'otvorte ďalší súbor v priečinku

Slučka

'povoliť deaktivované funkcie pre budúce použitie

S aplikáciou
.DisplayAlerts = Pravda
.ScreenUpdating = Pravda
Koniec s

End Sub

Vysvetlenie kódu VBA

Prvá časť kódu definuje podprogram, ktorý obsahuje celý váš kód VBA. Definujte podprogram pomocou sub, za ktorým nasleduje názov kódu. Podnázov môže byť akýkoľvek; v ideálnom prípade by ste si mali ponechať názov relevantný pre kód, ktorý sa chystáte napísať.

Súvisiace: Webové stránky a blogy, kde sa dozviete tipy a triky programu Excel

Excel VBA rozumie premenným vytvoreným používateľom a ich zodpovedajúcim typom údajov deklarovaným pomocou matná (rozmer).

Ak chcete zvýšiť rýchlosť spracovania kódu, môžete vypnúť aktualizáciu obrazovky a potlačiť všetky výstrahy, pretože to spomaľuje vykonávanie kódu.

Používateľ bude vyzvaný na zadanie cesty k priečinku, kde sú uložené dátové súbory. Vytvorí sa slučka na otvorenie každého zošita uloženého v priečinku, skopírovanie údajov z každého hárka a ich pripojenie k priečinku Konsolidácia pracovný zošit.

Zošit Konsolidácia je aktivovaný, aby Excel VBA mohol vypočítať posledný vyplnený riadok. Vyberie sa posledná bunka v hárku a posledný riadok sa vypočíta v zošite pomocou funkcie odsadenia. Toto je veľmi užitočné, keď makro začne pridávať údaje zo zdrojových súborov.

Keď slučka otvorí prvý zdrojový súbor, filtre sa odstránia z každého jedného hárka (ak sú existujú) a údaje v rozsahu od A2 do AZ20000 sa skopírujú a prilepia do konsolidácie pracovný zošit.

Proces sa opakuje, kým sa nepridajú všetky hárky zošita do hlavného zošita.

Súvisiace: Najlepšie online kurzy na zvládnutie pokročilého Excelu

Nakoniec sa zdrojový súbor po vložení všetkých údajov zatvorí. Otvorí sa ďalší zošit, takže makro VBA môže zopakovať rovnaké kroky pre ďalšiu sadu súborov.

Slučka je kódovaná tak, aby bežala, kým sa všetky súbory automaticky neaktualizujú v hlavnom zošite.

Používateľské prispôsobenia

Niekedy sa nechcete starať o vstavané výzvy, najmä ak ste koncovým používateľom. Ak by ste radšej napevno zakódovali cestu k priečinku Consolidation v kóde, môžete zmeniť túto časť kódu:

MyFolder = InputBox("Zadajte cestu k priečinku konsolidácie") & "\"

Komu:

MyFolder = "Cesta k priečinku" & "\"

Okrem toho môžete zmeniť aj odkazy na stĺpce, pretože tento krok nie je zahrnutý v tomto kóde. Stačí nahradiť odkaz na koncový stĺpec hodnotou posledného vyplneného stĺpca (v tomto prípade AZ). Musíte si uvedomiť, že posledný vyplnený riadok sa vypočítava pomocou kódu makra, takže musíte zmeniť iba odkaz na stĺpec.

Aby ste z tohto makra vyťažili maximum, môžete ho použiť iba na konsolidáciu zošitov v rovnakom formáte. Ak sú štruktúry odlišné, nemôžete použiť toto makro VBA.

Konsolidácia viacerých zošitov pomocou makra Excel VBA

Vytvorenie a úprava kódu Excel VBA je pomerne jednoduché, najmä ak rozumiete niektorým nuansám v kóde. VBA systematicky prechádza každým riadkom kódu a vykonáva ho riadok po riadku.

Ak vykonáte akékoľvek zmeny v kóde, musíte zabezpečiť, aby ste nezmenili poradie kódov, pretože to naruší vykonávanie kódu.

5 skvelých makier programu Microsoft Excel na triedenie údajov

Urobte správu údajov hračkou s týmito makrami programu Excel.

Prečítajte si ďalej

zdieľamTweetujteEmail
Súvisiace témy
  • Programovanie
  • Programovanie
  • Microsoft Excel
O autorovi
Gaurav Siyal (19 publikovaných článkov)

Gaurav Siyal má dvojročné skúsenosti s písaním, písaním pre sériu digitálnych marketingových firiem a dokumentov životného cyklu softvéru.

Viac od Gaurava Siyala

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné e-knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber