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.

instagram viewer

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 foi

ws. Activati
ws. AutoFilterMode = Fals

'ignorați antetul și copiați datele de pe rândul 2
Dacă Cells (2, 1) = "" atunci GoTo 1

Mergi 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.

5 macrocomenzi Microsoft Excel pentru sortarea datelor

Faceți gestionarea datelor o briză cu aceste macrocomenzi Excel.

Citiți în continuare

AcțiuneTweetE-mail
Subiecte asemănătoare
  • Programare
  • Programare
  • Microsoft Excel
Despre autor
Gaurav Siyal (19 articole publicate)

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.

Mai multe de la Gaurav Siyal

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