Excel VBA er en integrert del av Excel-automatisering, og VBAs bruk og fordeler kan ikke undergraves. Hvis du er i en oppoverbakke kamp og prøver å konsolidere flere ark og arbeidsbøker i Excel, er vi her for å hjelpe.

Makroene nevnt i denne veiledningen vil hjelpe deg med å oppnå den tilsynelatende uoverkommelige oppgaven i løpet av sekunder (eller minutter, hvis datamidlene er store).

Ved å følge denne opplæringen vil du lage din egen VBA-makro i Excel og effektivt slå sammen flere ark til én enkelt fil.

Slå sammen flere Excel-ark til én fil

For denne oppgaven lagres dataene i følgende ark:

  • Ark 1
  • Ark 2
  • Ark 3

Arknavnene oppført ovenfor er kun for illustrasjonsformål. Denne VBA-makroen er generisk og er ikke avhengig av arknavnene; du kan tilpasse koden for å bruke den med et eller flere arknavn.

Forutsetninger for å kjøre koden

Det er noen forutsetninger for å kjøre VBA-koden som er oppført nedenfor.

Du må lagre makrokoden i en ny Excel-fil. Lagre denne arbeidsboken med en .xlsm Utvidelse. Du kan lagre VBA-makroarbeidsboken med hvilket som helst navn.

Åpne en ny Excel-fil; trykk Alt + F11 på tastaturet for å åpne Excel VBA-redigeringsprogrammet. Når editoren åpnes, legg til en ny kodemodul ved å klikke på Sett inn fanen øverst. Plukke ut Modul å sette inn en ny modul; det er her du skal skrive inn VBA-makrokoden gitt nedenfor.

Databladene som skal konsolideres, bør være i en annen separat arbeidsbok. Navnet på arbeidsboken og arkene kan være det du velger.

Så snart du kjører VBA-koden, vil VBA-makroen gå gjennom hvert tilgjengelige regneark i primær arbeidsbok (dataarbeidsbok) og lim inn innholdet i et nylig lagt til ark i samme arbeidsbok.

De konsoliderte dataene vil være tilgjengelige i arket som er navngitt Konsolidert.

Kjører VBA-koden

Det er på tide å kjøre den nylig lagrede makrokoden. Kopier og lim inn denne koden i VBA-redigeringsmodulen:

Sub consolide_shts()
'erklære de forskjellige variablene som brukes i koden og vba-datatypene
Dim sht som regneark, sht1 som regneark, siste rad som heltall, lastrad1 som heltall
'deaktiver skjermflimmer og popup-varsler under utførelsen
Med applikasjon
.ScreenUpdating = False
.DisplayAlerts = False
Avslutt med
'lagre navnet på den primære arbeidsboken i en makrovariabel. Erstatt Test.xlsx med navnet på den primære arbeidsboken
Sett wbk1 = Workbooks("Test.xlsx")
'aktiver arbeidsboken før du utfører funksjonen(e) på den
wbk1.Aktiver
'kjør en vba for loop for å sjekke om et konsolidert ark allerede eksisterer. Hvis den eksisterer, vil for-løkken slette den.
For hver sht I wbk1.Sheets
Hvis sht. Navn = "Konsolidert" Så sht. Slett
Neste sht
'Legg til et nytt ark for å lagre de nylig konsoliderte dataene
Arbeidsark. Legg til. Navn = "Konsolidert"
'Legg til noen overskrifter i hver enkelt kolonne i det konsoliderte arket
Med ark ("Konsolidert")
.Range("a1").Value = "Ordredato"
.Range("b1").Value = "Region"
.Range("c1").Value = "Rep"
.Range("d1").Value = "Vare"
.Range("e1").Value = "Enheter"
.Range("f1").Value = "UnitCost"
.Range("g1").Value = "Total"

Avslutt med
'Det nyopprettede konsoliderte arket vil inneholde de konsoliderte dataene fra hvert enkelt ark i den primære arbeidsboken

For i = 1 Til wbk1.Worksheets. Telle
Hvis Ark (i).Navn <> "Konsolidert" Da
'Fang den siste fylte raden fra dataarkene i arbeidsboken
lastrow = Sheets (i).Range("a1").End (xlDown).Row
"Fang den siste fylte raden i det konsoliderte arket
lastrow1 = wbk1.Sheets("Consolidated").Range("a1048576").End (xlUp).Row + 1

'Kopier data fra kildearket og lim det inn i det konsoliderte arket
Ark (i).Range("a2:g" & lastrow).Copy Destination:=Sheets("Consolidated").Range("a" & lastrow1)
Slutt om
Neste i
'Aktiver Excel VBA-funksjoner for fremtidig bruk
Med applikasjon
.ScreenUpdating = Sant
.DisplayAlerts = Sant
Avslutt med

End Sub

VBA-koden forklart

Først erklærer du alle variablene du bruker i koden og tilordner dem de riktige VBA-datatypene for å få koden til å kjøre sømløst.

Når du erklærer variablene, er det nødvendig med litt grunnleggende rengjøring. Dette gjøres ved å deaktivere skjermflimmer og undertrykke popup-varsler. For eksempel, når du sletter et eksisterende ark ved hjelp av VBA-koden, ber en melding i Excel om bekreftelse før du sletter arket. Forespørsler som dette undertrykkes for å øke hastigheten på utførelse.

I neste trinn må du definere arbeidsbokens navn, som inneholder alle dataene dine. Erstatte Test.xlsx med navnet og utvidelsen av arbeidsbokens navn. Sørg for at du omgir navnet med anførselstegn.

Aktiver den primære arbeidsboken og slett eventuelle eksisterende ark med navnet Konsolidert for å eliminere tidligere lagrede data. VBA-koden veksler gjennom hvert ark, og så snart den støter på arknavnet Konsolidert det vil slette det. Dette gjøres ved hjelp av VBA IF-uttalelse, som sjekker for logiske betingelser og sletter arket så snart betingelsen er oppfylt.

Et nytt ark legges til den primære arbeidsboken for å lagre de konsoliderte dataene. Deretter legges forhåndsformaterte, standardiserte overskrifter til dette arket. Du kan endre verdiene til titlene (kolonneoverskrifter) ved å oppdatere informasjonen ved siden av cellereferansene innenfor anførselstegn.

For eksempel: .Range(“a1”) = “Ordredato” kan erstattes med .Range(“a1”) = “Ordrenummer”

Deretter veksler en VBA FOR-løkke gjennom hvert regneark, kopierer arkets innhold og limer inn innholdet i Konsolidert regneark før du går til neste ark i arbeidsboken. Denne prosessen gjentas til alle arkene er kopiert over.

Under denne prosessen blir alle radene automatisk beregnet og limt inn i det konsoliderte arket. Den siste fylte raden beregnes automatisk før dataene limes inn. Makroen er dynamisk og kan justeres til forskjellige datarader i hvert regneark.

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

Når data fra alle arkene er limt inn i hovedkonsolideringsarket, flyttes makroen til den siste delen av koden. VBA-funksjonene som først ble deaktivert, aktiveres igjen for fremtidig bruk.

Konsolidere flere ark ved hjelp av Excel VBA-makro

Excel VBA er et overflødig programmeringsspråk, som fungerer godt med alle Excel-komponenter. Hvert kodestykke er essensielt, og det er viktig å huske at kjøringen er avhengig av et linje-for-linje kjøringssystem, så du bør ikke endre rekkefølgen på kodelinjene.

For å tilpasse koden for dine behov, kan du gjøre de nødvendige endringene og kjøre denne koden for å konsolidere dataene effektivt og effektivt på sekunder.

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
  • Microsoft Excel
  • Makroer
  • Programmering
Om forfatteren
Gaurav Siyal (21 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