Excel VBA este o parte integrantă a automatizării Excel, iar utilizarea și beneficiile VBA nu pot fi subminate. Dacă vă aflați într-o luptă dificilă încercând să consolidați mai multe foi și registre de lucru în Excel, suntem aici pentru a vă ajuta.
Macrocomenzile menționate în acest ghid vă vor ajuta să realizați sarcina aparent de netrecut în câteva secunde (sau minute, dacă activele de date sunt mari).
Urmând acest tutorial, vă veți crea propria macrocomandă VBA în Excel și veți îmbina eficient mai multe foi într-un singur fișier.
Îmbinarea mai multor foi Excel într-un singur fișier
Pentru această sarcină, datele sunt stocate în următoarele foi:
- Foaia 1
- Foaia 2
- Foaia 3
Numele foilor enumerate mai sus au doar scop ilustrativ. Această macrocomandă VBA este generică și nu depinde de numele foilor; puteți personaliza codul pentru a-l folosi cu orice nume de foaie.
Cerințe preliminare pentru rularea codului
Există câteva condiții prealabile pentru rularea codului VBA enumerate mai jos.
Trebuie să stocați codul macro într-un nou fișier Excel. Salvați acest registru de lucru cu a
.xlsm extensie. Puteți salva registrul de lucru cu macrocomenzi VBA cu orice nume.Deschideți un nou fișier Excel; presa Alt + F11 de pe tastatură pentru a deschide editorul Excel VBA. Odată ce editorul se deschide, adăugați un nou modul de cod făcând clic pe Introduce filă în partea de sus. Selectați Modul pentru a introduce un nou modul; aici veți introduce codul macro VBA prezentat mai jos.
Fișele de date care trebuie consolidate ar trebui să fie într-un alt registru de lucru separat. Numele registrului de lucru și al foilor poate fi orice alegeți.
De îndată ce executați codul VBA, macrocomanda VBA va parcurge fiecare foaie de lucru disponibilă în registru de lucru principal (registru de lucru cu date) și lipiți conținutul într-o foaie nou adăugată în cadrul acesteia registru de lucru.
Datele consolidate vor fi disponibile în fișa numită Consolidat.
Rularea codului VBA
Este timpul să rulați noul cod macro salvat. Copiați și lipiți acest cod în modulul editorului VBA:
Sub consolidate_shts()
„declară diferitele variabile utilizate în cod și tipurile de date vba
Dim sht ca foaie de lucru, sht1 ca foaie de lucru, lastrow ca întreg, lastrow1 ca întreg
'dezactivați pâlpâirea ecranului și ferestrele pop-up de alertă în timpul execuției
Cu Aplicație
.ScreenUpdating = Fals
.DisplayAlerts = Fals
Se termina cu
„stochează numele registrului de lucru principal în variabila macro. Înlocuiți Test.xlsx cu numele registrului de lucru principal
Set wbk1 = Workbooks ("Test.xlsx")
'activați registrul de lucru înainte de a efectua funcția (funcțiile) pe acesta
wbk1.Activare
„Rulați o buclă vba for pentru a verifica dacă există deja o foaie Consolidated. Dacă există, bucla for o va șterge.
Pentru fiecare sht În wbk1.Sheets
Dacă sht. Nume = "Consolidat" Apoi sht. Șterge
Următorul sht
„Adăugați o nouă foaie pentru a stoca datele nou consolidate
Fișe de lucru. Adăuga. Nume = „Consolidat”
„Adăugați câteva anteturi la fiecare coloană individuală din foaia consolidată
Cu foi ("Consolidat")
.Range("a1").Value = "OrderDate"
.Range("b1").Value = "Regiune"
.Range("c1").Value = "Rep"
.Range("d1").Value = "Articol"
.Range("e1").Value = "Unități"
.Range("f1").Value = "UnitCost"
.Range("g1").Value = "Total"Se termina cu
„Foaia consolidată nou creată va păstra datele consolidate din fiecare foaie individuală din registrul de lucru principalPentru i = 1 To wbk1.Worksheets. Numara
Dacă Foile (i).Nume <> „Consolidat” Atunci
„Capturați ultimul rând populat din fișele de date din registrul de lucru
lastrow = Sheets (i).Range("a1").End (xlDown).Row
„Capturați ultimul rând populat din foaia Consolidată
lastrow1 = wbk1.Sheets("Consolidat").Range("a1048576").End (xlUp).Row + 1„Copiați datele din foaia sursă și lipiți-le în foaia consolidată
Foi de calcul (i).Range(„a2:g” și lastrow).Copy Destination:=Sheets(„Consolidat”).Range(„a” și lastrow1)
Încheiați dacă
Apoi eu
„Activați funcțiile Excel VBA pentru utilizare ulterioară
Cu Aplicație
.ScreenUpdating = Adevărat
.DisplayAlerts = Adevărat
Se termina cu
End Sub
Codul VBA explicat
Mai întâi, declarați toate variabilele pe care le utilizați în cod și atribuiți-le tipurile de date VBA corecte pentru ca codul să ruleze fără probleme.
Odată ce declarați variabilele, este nevoie de o întreținere de bază. Acest lucru se face prin dezactivarea pâlpâirii ecranului și suprimarea alertelor pop-up. De exemplu, când ștergeți o foaie existentă folosind codul VBA, un prompt din Excel vă solicită confirmarea înainte de a șterge foaia. Astfel de solicitări sunt suprimate pentru a crește viteza de execuție.
În pasul următor, trebuie să definiți numele registrului de lucru, care conține toate datele dvs. A inlocui Test.xlsx cu numele și extensia numelui registrului de lucru. Asigurați-vă că înconjurați numele cu ghilimele.
Activați registrul de lucru principal și ștergeți toate foile existente cu numele Consolidat pentru a elimina orice date stocate anterior. Codul VBA comută între fiecare foaie și de îndată ce întâlnește numele foii Consolidat il va sterge. Acest lucru se face folosind Declarație VBA IF, care verifică condițiile logice și șterge foaia de îndată ce condiția este îndeplinită.
O nouă foaie este adăugată la registrul de lucru principal pentru a stoca datele consolidate. Ulterior, la această foaie sunt adăugate anteturi preformatate, standardizate. Puteți modifica valorile titlurilor (antetele coloanelor) actualizând informațiile de lângă referințele de celule din ghilimele.
De exemplu: .Range(„a1”) = „Data comandă” poate fi înlocuit cu .Range(„a1”) = „OrderNumber”
Apoi, o buclă VBA FOR comută prin fiecare foaie de lucru, copiază conținutul foii și lipește conținutul în Consolidat foaia de lucru înainte de a trece la următoarea foaie din registrul de lucru. Acest proces se repetă până când toate foile sunt copiate.
În timpul acestui proces, toate rândurile sunt autocalculate și lipite în foaia Consolidată. Ultimul rând populat este calculat automat înainte ca datele să fie lipite. Macrocomanda este dinamică și se poate adapta la diferite rânduri de date din fiecare foaie de lucru.
Legate de: Funcții avansate Microsoft Excel pe care trebuie să le cunoașteți
Odată ce datele din toate foile sunt lipite în foaia principală de consolidare, macro-ul se mută la ultima parte a codului. Funcțiile VBA dezactivate inițial sunt activate din nou pentru utilizare ulterioară.
Consolidarea mai multor foi folosind macrocomandă Excel VBA
Excel VBA este un limbaj de programare de prisos, care funcționează bine cu toate componentele Excel. Fiecare bucată de cod este esențială și este important să rețineți că execuția depinde de un sistem de execuție linie cu linie, așa că nu ar trebui să schimbați ordinea liniilor de cod.
Pentru a personaliza codul pentru cerințele dvs., puteți face modificările necesare și puteți rula acest cod pentru a consolida datele eficient și eficient în câteva secunde.
Faceți gestionarea datelor o briză cu aceste macrocomenzi Excel.
Citiți în continuare
- Programare
- Microsoft Excel
- Macro-uri
- Programare
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