Når du arbejder med forskellige datakilder, kan du ofte kæmpe med at kompilere flere projektmapper og regneark, før du når frem til et sidste datastykke. Forestil dig en situation, hvor du har et par hundrede projektmapper at kombinere, før du overhovedet kan begynde din dag.
Ingen ønsker at bruge endeløse timer på at arbejde på forskellige kilder, åbne hver projektmappe, kopiere og indsætte data fra forskellige ark, før de endelig laver en konsolideret projektmappe. Hvad hvis en VBA-makro kan gøre dette for dig?
Med denne vejledning kan du oprette din egen Excel VBA-makrokode for at konsolidere flere projektmapper, alt sammen i løbet af få minutter (hvis datafilerne er mange).
Forudsætninger for at oprette din egen VBA-makrokode
Du skal bruge én projektmappe til at rumme VBA-koden, mens resten af kildedataprojektmapperne er separate. Derudover skal du oprette en projektmappe Konsolideret at gemme de konsoliderede data fra alle dine projektmapper.
Opret en mappe Konsolidering på din foretrukne placering for at gemme alle dine kildeprojektmapper. Når makroen kører, vil den skifte gennem hver projektmappe, der er gemt i denne mappe, kopiere indholdet fra forskellige ark og placere det i den konsoliderede projektmappe.
Oprettelse af din egen Excel VBA-kode
Når først forudsætningerne er af vejen, er det tid til at dykke ned i koden og begynde at hacke løs på det grundlæggende for at tilpasse den til dine krav.
Relaterede: Avancerede Microsoft Excel-funktioner, du skal kende
Tryk på Alt+F11 tast på Excel for at åbne VBA-makrokodeeditoren. Indsæt koden skrevet nedenfor og gem filen som en Macro-aktiveret projektmappe (.xlsm udvidelse).
Sub openfiles()
'erklære de anvendte variabler i VBA-koden
Dim MyFolder As String, MyFile As String, wbmain As Workbook, sidste række As Long
deaktiver disse funktioner for at forbedre kodebehandlingen
Med Ansøgning
.DisplayAlerts = Falsk
.ScreenUpdating = Falsk
Slut med'ændre stien til den mappe, hvor dine filer skal gemmes
MyFolder = InputBox("Indtast stien til Konsolideringsmappen") & "\"
'definer referencen til mappen i en makrovariabel
MyFile = Dir (MyFolder)
'åbn en løkke for at bladre gennem hver enkelt projektmappe, der er gemt i mappen
Gør mens Len (MyFile) > 0
'aktiver Consolidation-projektmappen
Windows ("Konsolidering"). Aktiver
'beregn den sidst udfyldte række
Range("a1048576"). Vælg
Udvælgelse. Slut (xlUp). Vælg
ActiveCell. Offset (1, 0). Vælg'åbn den første projektmappe i mappen Konsolidering
Arbejdsbøger. Åbn Filnavn:=Min mappe og min fil
Windows (Min fil). Aktiver
'skift gennem hvert ark i projektmapperne for at kopiere dataene
Dim ws As Arbejdsark
For hver var i arkws. Aktiver
ws. AutoFilterMode = FalskIgnorer overskriften og kopier dataene fra række 2
Hvis celler (2, 1) = "" Gå til 1Gå til 10
1: Næste
10: Range("a2:az20000"). Kopi
Windows ("Konsolidering"). Aktiver
'indsæt det kopierede indhold
ActiveSheet. sæt ind
Windows (Min fil). Aktiver
'luk den åbne projektmappe, når dataene er indsat
Aktiv arbejdsbog. Tæt
'tøm cachen for at gemme værdien af den næste projektmappe
MyFile = Dir()
'åbn den næste fil i mappen
Løkke
'aktiver de deaktiverede funktioner til fremtidig brug
Med Ansøgning
.DisplayAlerts = Sand
.ScreenUpdating = Sand
Slut med
Slut Sub
VBA-koden forklaret
Den første del af koden er at definere en underrutine, som indeholder al din VBA-kode. Definer subrutinen med sub, efterfulgt af navnet på koden. Undernavnet kan være hvad som helst; ideelt set bør du beholde et navn, der er relevant for den kode, du er ved at skrive.
Relaterede: Websteder og blogs for at lære Excel-tip og tricks
Excel VBA forstår brugerskabte variabler og deres tilsvarende datatyper deklareret med svag (dimension).
For at øge behandlingshastigheden af din kode kan du slå skærmopdatering fra og undertrykke alle advarsler, da det forsinker kodeudførelsen.
Brugeren bliver bedt om stien til den mappe, hvor datafilerne er gemt. En løkke oprettes for at åbne hver projektmappe, der er gemt i mappen, kopiere dataene fra hvert ark og tilføje dem til Konsolidering arbejdsbog.
Konsolideringsprojektmappen er aktiveret, så Excel VBA kan beregne den sidst udfyldte række. Den sidste celle i regnearket er valgt, og den sidste række beregnes i projektmappen ved hjælp af offset-funktionen. Dette er yderst nyttigt, når makroen begynder at tilføje data fra kildefilerne.
Når løkken åbner den første kildefil, fjernes filtrene fra hvert enkelt ark (hvis de eksisterer), og dataene fra A2 til AZ20000 vil blive kopieret og indsat i konsolideringen arbejdsbog.
Processen gentages, indtil alle projektmappearkene er tilføjet i masterprojektmappen.
Relaterede: Bedste onlinekurser til at mestre avanceret Excel
Til sidst lukkes kildefilen, når alle data er indsat. Den næste projektmappe åbnes, så VBA-makroen kan gentage de samme trin for det næste sæt filer.
Sløjfen er kodet til at køre, indtil alle filerne automatisk opdateres i masterprojektmappen.
Brugerbaserede tilpasninger
Nogle gange ønsker du ikke at bekymre dig om indbyggede prompter, især hvis du er slutbrugeren. Hvis du hellere vil fastkode stien til konsolideringsmappen i koden, kan du ændre denne del af koden:
MyFolder = InputBox("Indtast stien til Konsolideringsmappen") & "\"
Til:
MyFolder = "Mappesti" & "\"
Derudover kan du også ændre kolonnereferencerne, da trinnet ikke er inkluderet i denne kode. Du skal bare erstatte den sidste kolonnereference med din sidst udfyldte kolonneværdi (AZ, i dette tilfælde). Du skal huske, at den sidst udfyldte række beregnes via makrokoden, så du skal kun ændre kolonnereferencen.
For at få mest muligt ud af denne makro kan du kun bruge den til at konsolidere projektmapper i samme format. Hvis strukturerne er forskellige, kan du ikke bruge denne VBA-makro.
Konsolidering af flere projektmapper ved hjælp af Excel VBA-makro
Det er relativt nemt at oprette og ændre en Excel VBA-kode, især hvis du forstår nogle af nuancerne i koden. VBA kører systematisk gennem hver kodelinje og udfører den linje for linje.
Hvis du foretager ændringer i koden, skal du sikre dig, at du ikke ændrer rækkefølgen af koderne, da det vil forstyrre kodens eksekvering.
Gør datastyring til en leg med disse Excel-makroer.
Læs Næste
- Programmering
- Programmering
- Microsoft Excel
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