Excel VBA er en integreret del af Excel-automatisering, og VBA's brug og fordele kan ikke undermineres. Hvis du er i en kamp op ad bakke og forsøger at konsolidere flere ark og projektmapper i Excel, er vi her for at hjælpe.
Makroerne nævnt i denne vejledning hjælper dig med at opnå den tilsyneladende uoverkommelige opgave i løbet af få sekunder (eller minutter, hvis dataaktiverne er store).
Ved at følge denne vejledning vil du oprette din egen VBA-makro i Excel og effektivt flette flere ark til en enkelt fil.
Fletning af flere Excel-ark til én fil
Til denne opgave gemmes dataene i følgende ark:
- Ark 1
- Ark 2
- Ark 3
Arknavnene nævnt ovenfor er kun til illustrationsformål. Denne VBA-makro er generisk og afhænger ikke af arknavnene; du kan tilpasse koden til at bruge den med et eller flere arknavne.
Forudsætninger for at køre koden
Der er nogle forudsætninger for at køre VBA-koden nedenfor.
Du skal gemme makrokoden i en ny Excel-fil. Gem denne projektmappe med en .xlsm udvidelse. Du kan gemme VBA-makroprojektmappen med et hvilket som helst navn.
Åbn en ny Excel-fil; trykke Alt + F11 på dit tastatur for at åbne Excel VBA-editoren. Når editoren åbner, tilføjer du et nyt kodemodul ved at klikke på Indsæt fanen øverst. Vælg modul at indsætte et nyt modul; det er her, du skal indtaste VBA-makrokoden nedenfor.
Databladene, der skal konsolideres, bør være i en anden separat projektmappe. Navnet på projektmappen og arkene kan være, hvad du vælger.
Så snart du udfører VBA-koden, vil VBA-makroen gå gennem hvert tilgængeligt regneark i primær projektmappe (dataprojektmappe) og indsæt indholdet i et nyligt tilføjet ark inden for samme arbejdsbog.
De konsoliderede data vil være tilgængelige i det navngivne ark Konsolideret.
Kørsel af VBA-koden
Det er tid til at køre den nyligt gemte makrokode. Kopier og indsæt denne kode i VBA-editorens modul:
Sub consolide_shts()
'erklære de forskellige variabler, der bruges i koden og vba-datatyperne
Dim sht som regneark, sht1 som regneark, sidste række som heltal, sidste række som heltal
'deaktiver skærmflimmer og advarsels-pop-ups under udførelsen
Med Ansøgning
.ScreenUpdating = Falsk
.DisplayAlerts = Falsk
Slut med
'gem navnet på den primære projektmappe i en makrovariabel. Erstat Test.xlsx med navnet på din primære projektmappe
Indstil wbk1 = Workbooks("Test.xlsx")
'aktiver projektmappen, før du udfører funktionen/funktionerne på den
wbk1.Aktiver
'kør en vba for-løkke for at kontrollere, om et ark Consolidated allerede eksisterer. Hvis den findes, vil for-løkken slette den.
For Hver sht I wbk1.Sheets
Hvis sht. Navn = "Konsolideret" Så sht. Slet
Næste sht
'Tilføj et nyt ark for at gemme de nyligt konsoliderede data
Arbejdsark. Tilføje. Navn = "Konsolideret"
'Tilføj nogle overskrifter til hver enkelt kolonne i det konsoliderede ark
Med ark ("Konsolideret")
.Range("a1").Value = "Ordredato"
.Range("b1").Value = "Region"
.Range("c1").Value = "Rep"
.Range("d1").Value = "Vare"
.Range("e1").Value = "Enheder"
.Range("f1").Value = "UnitCost"
.Range("g1").Value = "Total"Slut med
'Det nyoprettede konsoliderede ark vil indeholde de konsoliderede data fra hvert enkelt ark i den primære projektmappeFor i = 1 Til wbk1.Worksheets. Tælle
Hvis Ark (i).Navn <> "Konsolideret" Så
'Fang den sidst udfyldte række fra dataarkene i projektmappen
lastrow = Sheets (i).Range("a1").End (xlDown).Række
'Fang den sidst udfyldte række i det konsoliderede ark
lastrow1 = wbk1.Sheets("Konsolideret").Range("a1048576").End (xlUp).Række + 1'Kopiér data fra kildearket og indsæt det i det konsoliderede ark
Ark (i).Range("a2:g" & lastrow).Copy Destination:=Sheets("Konsolideret").Range("a" & lastrow1)
Afslut Hvis
Næste i
'Aktiver Excel VBA-funktioner til fremtidig brug
Med Ansøgning
.ScreenUpdating = Sand
.DisplayAlerts = Sand
Slut med
Slut Sub
VBA-koden forklaret
Først skal du deklarere alle de variabler, du bruger i koden, og tildele dem de korrekte VBA-datatyper for at få koden til at køre problemfrit.
Når du erklærer variablerne, er der behov for noget grundlæggende rengøring. Dette gøres ved at deaktivere skærmflimmer og undertrykke pop op-advarsler. For eksempel, når du sletter et eksisterende ark ved hjælp af VBA-koden, beder en prompt i Excel om bekræftelse, før du sletter arket. Prompter som denne undertrykkes for at øge udførelseshastigheden.
I det næste trin skal du definere projektmappens navn, som indeholder alle dine data. Erstatte Test.xlsx med navnet og udvidelsen af dit projektmappenavn. Sørg for at omgive navnet med anførselstegn.
Aktiver den primære projektmappe, og slet eventuelle eksisterende ark med navnet Konsolideret for at fjerne tidligere gemte data. VBA-koden skifter gennem hvert ark, og så snart den støder på arknavnet Konsolideret det vil slette det. Dette gøres ved hjælp af VBA IF-erklæring, som tjekker for logiske betingelser og sletter arket, så snart betingelsen er opfyldt.
Et nyt ark føjes til den primære projektmappe for at gemme de konsoliderede data. Efterfølgende tilføjes præformaterede, standardiserede overskrifter til dette ark. Du kan ændre værdierne for titlerne (kolonneoverskrifter) ved at opdatere oplysningerne ud for cellereferencerne inden for anførselstegn.
For eksempel: .Range(“a1”) = “Ordredato” kan udskiftes med .Range(“a1”) = “Ordrenummer”
Derefter skifter en VBA FOR-løkke gennem hvert regneark, kopierer arkets indhold og indsætter indholdet i Konsolideret arbejdsark, før du går til næste ark i projektmappen. Denne proces gentages, indtil alle ark er kopieret over.
Under denne proces bliver alle rækkerne automatisk beregnet og indsat i det konsoliderede ark. Den sidst udfyldte række beregnes automatisk, før dataene indsættes. Makroen er dynamisk og kan justeres til forskellige datarækker inden for hvert regneark.
Relaterede: Avancerede Microsoft Excel-funktioner, du skal kende
Når data fra alle ark er indsat i hovedkonsolideringsarket, flyttes makroen til den sidste del af koden. De oprindeligt deaktiverede VBA-funktioner aktiveres igen til fremtidig brug.
Konsolidering af flere ark ved hjælp af Excel VBA-makro
Excel VBA er et overflødigt programmeringssprog, som fungerer godt med alle Excel-komponenter. Hvert stykke kode er essentielt, og det er vigtigt at huske, at eksekveringen er afhængig af et linje-for-linje eksekveringssystem, så du bør ikke ændre rækkefølgen af kodelinjerne.
For at tilpasse koden til dine behov kan du foretage de nødvendige ændringer og køre denne kode for at konsolidere dataene effektivt og effektivt på få sekunder.
Gør datastyring til en leg med disse Excel-makroer.
Læs Næste
- Programmering
- Microsoft Excel
- Makroer
- Programmering
Gaurav Siyal har to års skriveerfaring og har skrevet for en række digitale marketingfirmaer og softwarelivscyklusdokumenter.
Abonner på vores nyhedsbrev
Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!
Klik her for at abonnere