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.

instagram viewer

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 ark

ws. Aktiver
ws. AutoFilterMode = Falsk

Ignorer overskriften og kopier dataene fra række 2
Hvis celler (2, 1) = "" Gå til 1

Gå 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.

5 seje Microsoft Excel-makroer til at sortere data

Gør datastyring til en leg med disse Excel-makroer.

Læs Næste

DelTweetE-mail
Relaterede emner
  • Programmering
  • Programmering
  • Microsoft Excel
Om forfatteren
Gaurav Siyal (19 artikler udgivet)

Gaurav Siyal har to års skriveerfaring og har skrevet for en række digitale marketingfirmaer og softwarelivscyklusdokumenter.

Mere fra Gaurav Siyal

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!

Klik her for at abonnere