Når du arbeider med varierte datakilder, kan du ofte slite med å kompilere flere arbeidsbøker og regneark før du kommer til en siste databit. Tenk deg en situasjon der du har noen hundre arbeidsbøker å kombinere før du i det hele tatt kan begynne dagen.

Ingen ønsker å bruke endeløse timer på å jobbe med forskjellige kilder, åpne hver arbeidsbok, kopiere og lime inn data fra forskjellige ark, før de til slutt lager en konsolidert arbeidsbok. Hva om en VBA-makro kan gjøre dette for deg?

Med denne veiledningen kan du lage din egen Excel VBA-makrokode for å konsolidere flere arbeidsbøker, alt i løpet av få minutter (hvis datafilene er mange).

Forutsetninger for å lage din egen VBA-makrokode

Du trenger én arbeidsbok for å inneholde VBA-koden, mens resten av kildedataarbeidsbøkene er separate. Lag i tillegg én arbeidsbok Konsolidert for å lagre de konsoliderte dataene fra alle arbeidsbøkene dine.

Opprett en mappe Konsolidering på ditt foretrukne sted for å lagre alle kildearbeidsbøkene dine. Når makroen kjører, vil den veksle mellom hver arbeidsbok som er lagret i denne mappen, kopiere innholdet fra forskjellige ark og plassere det i den konsoliderte arbeidsboken.

instagram viewer

Lag din egen Excel VBA-kode

Når forutsetningene er ute av veien, er det på tide å fordype seg i koden og begynne å hacke løs på det grunnleggende for å tilpasse den til dine behov.

I slekt: Avanserte Microsoft Excel-funksjoner du må kjenne til

trykk Alt+F11 tasten på Excel for å åpne VBA-makrokodeeditoren. Lim inn koden skrevet nedenfor og lagre filen som en makroaktivert arbeidsbok (.xlsm Utvidelse).

Sub openfiles()

'erklære variablene som brukes i VBA-koden

Dim MyFolder As String, MyFile As String, wbmain As Workbook, lastrow As Long

deaktiver disse funksjonene for å forbedre kodebehandlingen

Med applikasjon
.DisplayAlerts = False
.ScreenUpdating = False
Avslutt med

'endre banen til mappen der filene dine skal lagres

MyFolder = InputBox("Skriv inn banen til konsolideringsmappen") & "\"

'definer referansen til mappen i en makrovariabel

MyFile = Dir (MyFolder)

åpne en sløyfe for å bla gjennom hver enkelt arbeidsbok som er lagret i mappen

Gjør mens Len (MyFile) > 0

'aktiver Consolidation-arbeidsboken

Windows ("Konsolidering"). Aktiver

'beregn den siste fylte raden

Range("a1048576"). Velg
Utvalg. Slutt (xlUp). Velg
ActiveCell. Offset (1, 0). Velg

'åpne den første arbeidsboken i Konsolidering-mappen

Arbeidsbøker. Åpne Filnavn:=Min mappe og min fil

Windows (Min fil). Aktiver

'gå gjennom hvert ark i arbeidsbøkene for å kopiere dataene

Dim ws As Worksheet
For hver er i ark

ws. Aktiver
ws. AutoFilterMode = False

'ignorer overskriften og kopier dataene fra rad 2
Hvis celler (2, 1) = "" Gå til 1

Gå til 10

1: Neste

10: Range("a2:az20000"). Kopi

Windows ("Konsolidering"). Aktiver

'lim inn det kopierte innholdet

Aktivt ark. Lim inn

Windows (Min fil). Aktiver

'lukk den åpne arbeidsboken når dataene er limt inn

Active Workbook. Lukk

'tøm hurtigbufferen for å lagre verdien til neste arbeidsbok

MyFile = Dir()

'åpne neste fil i mappen

Løkke

'aktiver de deaktiverte funksjonene for fremtidig bruk

Med applikasjon
.DisplayAlerts = Sant
.ScreenUpdating = Sant
Avslutt med

End Sub

VBA-koden forklart

Den første delen av koden definerer en subrutine, som inneholder all VBA-koden din. Definer subrutinen med under, etterfulgt av navnet på koden. Undernavnet kan være hva som helst; ideelt sett bør du beholde et navn som er relevant for koden du skal skrive.

I slekt: Nettsteder og blogger for å lære Excel-tips og triks

Excel VBA forstår brukerlagde variabler og deres tilsvarende datatyper deklarert med dempet (dimensjon).

For å øke behandlingshastigheten til koden din, kan du slå av skjermoppdatering og undertrykke alle varsler, da det bremser kjøringen av koden.

Brukeren vil bli bedt om banen til mappen der datafilene er lagret. En løkke opprettes for å åpne hver arbeidsbok som er lagret i mappen, kopiere dataene fra hvert ark og legge dem til Konsolidering arbeidsbok.

Konsolideringsarbeidsboken er aktivert slik at Excel VBA kan beregne den siste fylte raden. Den siste cellen i regnearket er valgt, og den siste raden beregnes i arbeidsboken ved å bruke offset-funksjonen. Dette er svært nyttig når makroen begynner å legge til data fra kildefilene.

Når loopen åpner den første kildefilen, fjernes filtrene fra hvert enkelt ark (hvis de eksisterer), og dataene fra A2 til AZ20000 vil bli kopiert og limt inn i konsolideringen arbeidsbok.

Prosessen gjentas til alle arbeidsbokarkene er lagt til i hovedarbeidsboken.

I slekt: Beste nettkurs for å mestre avansert Excel

Til slutt lukkes kildefilen når alle dataene er limt inn. Den neste arbeidsboken åpnes slik at VBA-makroen kan gjenta de samme trinnene for neste sett med filer.

Sløyfen er kodet for å kjøre til alle filene blir automatisk oppdatert i hovedarbeidsboken.

Brukerbaserte tilpasninger

Noen ganger vil du ikke bekymre deg for innebygde spørsmål, spesielt hvis du er sluttbrukeren. Hvis du heller vil hardkode banen til konsolideringsmappen i koden, kan du endre denne delen av koden:

MyFolder = InputBox("Skriv inn banen til konsolideringsmappen") & "\"

Til:

MyFolder = "Mappebane" og "\"

I tillegg kan du også endre kolonnereferansene, siden trinnet ikke er inkludert i denne koden. Bare bytt ut sluttkolonnereferansen med den sist utfylte kolonneverdien (AZ, i dette tilfellet). Du må huske at den siste fylte raden beregnes via makrokoden, så du trenger kun å endre kolonnereferansen.

For å få mest mulig ut av denne makroen kan du bare bruke den til å konsolidere arbeidsbøker i samme format. Hvis strukturene er forskjellige, kan du ikke bruke denne VBA-makroen.

Konsolidere flere arbeidsbøker ved hjelp av Excel VBA-makro

Det er relativt enkelt å lage og endre en Excel VBA-kode, spesielt hvis du forstår noen av nyansene i koden. VBA kjører systematisk gjennom hver kodelinje og kjører den linje for linje.

Hvis du gjør endringer i koden, må du sørge for at du ikke endrer rekkefølgen på kodene, da det vil forstyrre kjøringen av koden.

5 kule Microsoft Excel-makroer for sortering av data

Gjør dataadministrasjon til en lek med disse Excel-makroene.

Les Neste

DelekvitringE-post
Relaterte temaer
  • Programmering
  • Programmering
  • Microsoft Excel
Om forfatteren
Gaurav Siyal (19 artikler publisert)

Gaurav Siyal har to års skriveerfaring, og har skrevet for en rekke digitale markedsføringsfirmaer og programvarelivssyklusdokumenter.

Mer fra Gaurav Siyal

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!

Klikk her for å abonnere