Excel VBA is een integraal onderdeel van Excel-automatisering en het gebruik en de voordelen van VBA kunnen niet worden ondermijnd. Als je een zware strijd probeert te maken om meerdere werkbladen en werkmappen in Excel te consolideren, zijn we er om je te helpen.

Met de macro's die in deze handleiding worden genoemd, kunt u de schijnbaar onoverkomelijke taak binnen enkele seconden (of minuten, als de gegevensactiva groot zijn) uitvoeren.

Door deze zelfstudie te volgen, maakt u uw eigen VBA-macro in Excel en voegt u efficiënt meerdere bladen samen in één enkel bestand.

Meerdere Excel-bladen samenvoegen tot één bestand

Voor deze taak worden de gegevens opgeslagen in de volgende bladen:

  • Blad1
  • Blad2
  • Blad3

De hierboven vermelde bladnamen zijn alleen ter illustratie. Deze VBA-macro is generiek en is niet afhankelijk van de bladnamen; u kunt de code aanpassen om deze met elke bladnaam (s) te gebruiken.

Vereisten voor het uitvoeren van de code

Er zijn enkele vereisten voor het uitvoeren van de onderstaande VBA-code.

instagram viewer

U dient de macrocode op te slaan in een nieuw Excel-bestand. Bewaar deze werkmap met een .xlsm verlenging. U kunt de VBA-macrowerkmap met elke naam opslaan.

Open een nieuw Excel-bestand; druk op Alt + F11 op uw toetsenbord om de Excel VBA-editor te openen. Zodra de editor is geopend, voegt u een nieuwe codemodule toe door op de Invoegen tabblad bovenaan. Selecteer module om een ​​nieuwe module in te voegen; hier voer je de onderstaande VBA-macrocode in.

De gegevensbladen die moeten worden samengevoegd, moeten in een andere aparte werkmap staan. De naam van de werkmap en de werkbladen kunnen zijn wat u maar wilt.

Zodra u de VBA-code uitvoert, doorloopt de VBA-macro elk beschikbaar werkblad in de primaire werkmap (gegevenswerkmap) en plak de inhoud in een nieuw toegevoegd blad binnen hetzelfde werkboek.

De geconsolideerde gegevens zijn beschikbaar in het blad met de naam geconsolideerd.

De VBA-code uitvoeren

Het is tijd om de nieuw opgeslagen macrocode uit te voeren. Kopieer en plak deze code in de module van de VBA-editor:

Subconsolidatie_shts()
'declareer de verschillende variabelen die worden gebruikt in de code en de vba-gegevenstypen'
Dim sht als werkblad, sht1 als werkblad, laatste rij als geheel getal, laatste rij1 als geheel getal
'scherm flikkeren uitschakelen en pop-ups waarschuwen tijdens de uitvoering'
Met toepassing
.ScreenUpdating = False
.DisplayAlerts = False
Eindigt met
' sla de naam van de primaire werkmap op in de macro-variabele. Vervang Test.xlsx door de naam van uw primaire werkmap
Stel wbk1 = Werkmappen ("Test.xlsx") in
'activeer de werkmap voordat je de functie(s) erop uitvoert'
wbk1.Activeren
'voer een vba for-lus uit om te controleren of er al een sheet Consolidated bestaat. Als het bestaat, zal de for-lus het verwijderen.
Voor elke sht In wbk1.Sheets
Als sht. Naam = "Geconsolideerd" Dan sht. Verwijderen
volgende sht
'Voeg een nieuw blad toe om de nieuw geconsolideerde gegevens op te slaan'
Werkbladen. Toevoegen. Naam = "Geconsolideerd"
'Voeg enkele koppen toe aan elke afzonderlijke kolom in het geconsolideerde blad'
Met bladen ("Geconsolideerd")
.Bereik ("a1"). Waarde = "Orderdatum"
.Bereik("b1").Waarde = "Regio"
.Bereik ("c1"). Waarde = "Rep"
.Bereik("d1").Waarde = "Artikel"
.Bereik ("e1"). Waarde = "Eenheden"
.Bereik ("f1"). Waarde = "Kosten per eenheid"
.Bereik ("g1"). Waarde = "Totaal"

Eindigt met
'Het nieuw gemaakte geconsolideerde blad bevat de geconsolideerde gegevens van elk afzonderlijk blad in de primaire werkmap

Voor i = 1 Naar wbk1.Werkbladen. Graaf
Als Spreadsheets (i).Naam <> "Geconsolideerd" Dan
'Vang de laatst ingevulde rij van de gegevensbladen in de werkmap'
laatsterij = Bladen (i).Bereik("a1").Einde (xlOmlaag).Rij
'Leg de laatst ingevulde rij in het geconsolideerde blad vast'
lastrow1 = wbk1.Sheets("Geconsolideerd").Bereik("a1048576").Einde (xlUp).Rij + 1

'Kopieer gegevens uit het bronblad en plak het in het geconsolideerde blad'
Bladen (i).Bereik("a2:g" & laatste rij).Bestemming kopiëren:=Blads("Geconsolideerd").Bereik ("a" & laatste rij1)
Stop als
volgende i
'Schakel Excel VBA-functies in voor toekomstig gebruik'
Met toepassing
.ScreenUpdating = True
.DisplayAlerts = True
Eindigt met

Einde sub

De VBA-code uitgelegd

Declareer eerst alle variabelen die u in de code gebruikt en wijs ze toe aan de juiste VBA-gegevenstypen om de code naadloos te laten werken.

Nadat u de variabelen hebt gedeclareerd, is er wat elementaire huishouding nodig. Dit wordt gedaan door het flikkeren van het scherm uit te schakelen en pop-upwaarschuwingen te onderdrukken. Wanneer u bijvoorbeeld een bestaand blad verwijdert met behulp van de VBA-code, vraagt ​​een prompt in Excel om bevestiging voordat het blad wordt verwijderd. Dit soort prompts worden onderdrukt om de uitvoeringssnelheid te verhogen.

In de volgende stap moet u de naam van de werkmap definiëren, die al uw gegevens bevat. Vervangen Test.xlsx met de naam en extensie van de naam van uw werkmap. Zorg ervoor dat je de naam tussen aanhalingstekens plaatst.

Activeer de primaire werkmap en verwijder alle bestaande bladen met de naam geconsolideerd om alle eerder opgeslagen gegevens te verwijderen. De VBA-code schakelt door elk blad en zodra het de bladnaam tegenkomt geconsolideerd het zal het verwijderen. Dit gebeurt met behulp van de VBA IF-instructie, die controleert op logische voorwaarden en het blad verwijdert zodra aan de voorwaarde is voldaan.

Er wordt een nieuw blad toegevoegd aan de primaire werkmap om de geconsolideerde gegevens op te slaan. Vervolgens worden voorgeformatteerde, gestandaardiseerde headers aan dit blad toegevoegd. U kunt de waarden van de titels (kolomkoppen) wijzigen door de informatie naast de celverwijzingen tussen aanhalingstekens bij te werken.

Bijvoorbeeld: .Bereik ("a1") = "Orderdatum" kan worden vervangen door .Bereik ("a1") = "Bestelnummer"

Vervolgens schakelt een VBA FOR-lus door elk werkblad, kopieert de inhoud van het blad en plakt de inhoud in de geconsolideerd werkblad voordat u naar het volgende blad in de werkmap gaat. Dit proces wordt herhaald totdat alle vellen zijn gekopieerd.

Tijdens dit proces worden alle rijen automatisch berekend en in het geconsolideerde blad geplakt. De laatst ingevulde rij wordt automatisch berekend voordat de gegevens worden geplakt. De macro is dynamisch en kan worden aangepast aan verschillende gegevensrijen binnen elk werkblad.

Verwant: Geavanceerde Microsoft Excel-functies die u moet kennen

Zodra de gegevens van alle bladen in het hoofdconsolidatieblad zijn geplakt, wordt de macro verplaatst naar het laatste deel van de code. De aanvankelijk uitgeschakelde VBA-functies worden weer ingeschakeld voor toekomstig gebruik.

Meerdere bladen consolideren met Excel VBA-macro

Excel VBA is een overbodige programmeertaal, die goed samenwerkt met alle Excel-componenten. Elk stukje code is essentieel en het is belangrijk om te onthouden dat de uitvoering afhankelijk is van een regel-voor-regel uitvoeringssysteem, dus u moet de volgorde van de coderegels niet wijzigen.

Om de code aan uw vereisten aan te passen, kunt u de vereiste wijzigingen aanbrengen en deze code uitvoeren om de gegevens binnen enkele seconden efficiënt en effectief te consolideren.

5 coole Microsoft Excel-macro's voor het sorteren van gegevens

Maak gegevensbeheer een fluitje van een cent met deze Excel-macro's.

Lees volgende

DeelTweetenE-mail
Gerelateerde onderwerpen
  • Programmeren
  • Microsoft Excel
  • Macro's
  • Programmeren
Over de auteur
Gaurav Siyal (21 artikelen gepubliceerd)

Gaurav Siyal heeft twee jaar schrijfervaring en schreef voor een reeks digitale marketingbedrijven en documenten over de levenscyclus van software.

Meer van Gaurav Siyal

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren