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.
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 Sheetsws. Aktivovať
ws. AutoFilterMode = False'ignorujte hlavičku a skopírujte údaje z riadku 2
Ak bunky (2, 1) = "" Potom prejdite na 1Prejsť 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.
Urobte správu údajov hračkou s týmito makrami programu Excel.
Prečítajte si ďalej
- Programovanie
- Programovanie
- Microsoft Excel
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.
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