Când lucrați cu surse de date variate, s-ar putea să vă dificultați adesea să compilați mai multe registre și foi de lucru înainte de a ajunge la o singură piesă de date finală. Imaginați-vă o situație în care aveți câteva sute de cărți de lucru de combinat înainte de a vă putea chiar începe ziua.
Nimeni nu vrea să petreacă ore nesfârșite lucrând pe diferite surse, deschizând fiecare registru de lucru, copiend și lipând datele din diferite foi, înainte de a crea în sfârșit un registru de lucru consolidat. Ce se întâmplă dacă o macrocomandă VBA poate face acest lucru pentru tine?
Cu acest ghid, vă puteți crea propriul cod macro VBA Excel pentru a consolida mai multe registre de lucru, totul în câteva minute (dacă fișierele de date sunt multe).
Cerințe preliminare pentru crearea propriului cod macro VBA
Aveți nevoie de un registru de lucru pentru a găzdui codul VBA, în timp ce restul registrelor de date sursă sunt separate. În plus, creați un registru de lucru Consolidat pentru a stoca datele consolidate din toate registrele dvs. de lucru.
Creați un folder Consolidare la locația preferată pentru a stoca toate registrele de lucru sursă. Când macro-ul rulează, va comuta prin fiecare registru de lucru stocat în acest folder, va copia conținutul din diferite foi și îl va plasa în registrul de lucru consolidat.
Crearea propriului cod Excel VBA
Odată ce cerințele prealabile sunt eliminate, este timpul să vă adânciți în cod și să începeți să spargeți elementele de bază pentru a-l adapta la cerințele dvs.
Legate de: Funcții avansate Microsoft Excel pe care trebuie să le cunoașteți
apasă pe Alt+F11 tasta pe Excel pentru a deschide editorul de cod macro VBA. Lipiți codul scris mai jos și salvați fișierul ca un registru de lucru cu Macro (.xlsm extensie).
Sub openfiles()
'declară variabilele utilizate în codul VBA
Dim MyFolder ca șir, MyFile ca șir, wbmain ca registru de lucru, lastrow ca lung
„dezactivați aceste funcții pentru a îmbunătăți procesarea codului
Cu Aplicație
.DisplayAlerts = Fals
.ScreenUpdating = Fals
Se termina cu„schimbați calea folderului în care vor fi salvate fișierele dvs
MyFolder = InputBox(„Introduceți calea folderului de consolidare”) și „\”
'definiți referința folderului într-o variabilă macro
MyFile = Dir (MyFolder)
„Deschideți o buclă pentru a parcurge fiecare registru de lucru individual stocat în folder
Do While Len (MyFile) > 0
„Activați registrul de lucru Consolidare
Windows(„Consolidare”).Activare
'calculați ultimul rând populat
Interval("a1048576").Selectați
Selecţie. Sfârșit (xlUp).Selectați
ActiveCell. Offset (1, 0).Selectați'deschideți primul registru de lucru din folderul Consolidare
Caiete de lucru. Deschideți Filename:=MyFolder & MyFile
Windows (MyFile).Activare
„Comutați prin fiecare foaie din registrele de lucru pentru a copia datele
Dim ws As Worksheet
Pentru fiecare ws în foiws. Activati
ws. AutoFilterMode = Fals'ignorați antetul și copiați datele de pe rândul 2
Dacă Cells (2, 1) = "" atunci GoTo 1Mergi la 10
1: În continuare
10: Interval("a2:az20000").Copy
Windows(„Consolidare”).Activare
„inserați conținutul copiat
Foaie activă. Pastă
Windows (MyFile).Activare
„închideți registrul de lucru deschis odată ce datele sunt lipite
ActiveWorkbook. Închide
„golește memoria cache pentru a stoca valoarea următorului registru de lucru
MyFile = Dir()
'deschide următorul fișier din folder
Buclă
„Activați funcțiile dezactivate pentru utilizare ulterioară
Cu Aplicație
.DisplayAlerts = Adevărat
.ScreenUpdating = Adevărat
Se termina cu
End Sub
Codul VBA explicat
Prima parte a codului este definirea unei subrutine, care deține tot codul dvs. VBA. Definiți subrutina cu sub, urmat de numele codului. Subnumele poate fi orice; în mod ideal, ar trebui să păstrați un nume relevant pentru codul pe care urmează să îl scrieți.
Legate de: Site-uri web și bloguri pentru a afla sfaturi și trucuri Excel
Excel VBA înțelege variabilele create de utilizator și tipurile lor de date corespunzătoare declarate cu dim (dimensiune).
Pentru a îmbunătăți viteza de procesare a codului dvs., puteți dezactiva actualizarea ecranului și suprima toate alertele, deoarece acest lucru încetinește execuția codului.
Utilizatorului i se va solicita calea folderului în care sunt stocate fișierele de date. Este creată o buclă pentru a deschide fiecare registru de lucru stocat în folder, pentru a copia datele din fiecare foaie și pentru a le adăuga la Consolidare registru de lucru.
Registrul de lucru Consolidare este activat, astfel încât Excel VBA să poată calcula ultimul rând populat. Ultima celulă din foaia de lucru este selectată, iar ultimul rând este calculat în registrul de lucru folosind funcția de compensare. Acest lucru este foarte util atunci când macrocomandă începe să adauge date din fișierele sursă.
Pe măsură ce bucla deschide primul fișier sursă, filtrele sunt eliminate din fiecare foaie (dacă acestea există), iar datele de la A2 la AZ20000 vor fi copiate și lipite în Consolidare registru de lucru.
Procesul se repetă până când toate foile caietului de lucru sunt atașate în registrul de lucru principal.
Legate de: Cele mai bune cursuri online pentru a stăpâni Excel avansat
În cele din urmă, fișierul sursă este închis odată ce toate datele sunt lipite. Următorul registru de lucru este deschis, astfel încât macrocomanda VBA să poată repeta aceiași pași pentru următorul set de fișiere.
Bucla este codificată pentru a rula până când toate fișierele sunt actualizate automat în registrul de lucru principal.
Personalizări bazate pe utilizator
Uneori, nu doriți să vă faceți griji cu privire la solicitările încorporate, mai ales dacă sunteți utilizatorul final. Dacă preferați să codificați calea folderului de consolidare în cod, puteți modifica această parte a codului:
MyFolder = InputBox(„Introduceți calea folderului de consolidare”) și „\”
La:
MyFolder = „Calea dosarului” și „\”
În plus, puteți modifica și referințele coloanei, deoarece pasul nu este inclus în acest cod. Doar înlocuiți referința coloanei de la sfârșitul cu ultima valoare a coloanei populate (AZ, în acest caz). Trebuie să rețineți că ultimul rând populat este calculat prin intermediul codului macro, așa că trebuie să modificați numai referința coloanei.
Pentru a profita la maximum de această macrocomandă, o puteți folosi numai pentru a consolida registrele de lucru în același format. Dacă structurile sunt diferite, nu puteți utiliza această macrocomandă VBA.
Consolidarea mai multor registre de lucru utilizând macrocomandă Excel VBA
Crearea și modificarea unui cod Excel VBA este relativ ușoară, mai ales dacă înțelegeți unele dintre nuanțele din cod. VBA rulează sistematic prin fiecare linie de cod și o execută linie cu linie.
Dacă faceți modificări codului, trebuie să vă asigurați că nu modificați ordinea codurilor, deoarece aceasta va perturba execuția codului.
Faceți gestionarea datelor o briză cu aceste macrocomenzi Excel.
Citiți în continuare
- Programare
- Programare
- Microsoft Excel
Gaurav Siyal are doi ani de experiență în scris, scriind pentru o serie de firme de marketing digital și documente despre ciclul de viață al software-ului.
Aboneaza-te la newsletter-ul nostru
Alăturați-vă buletinului nostru informativ pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!
Click aici pentru a te abona