Erinevate andmeallikatega töötades võib teil sageli olla raskusi mitme töövihiku ja töölehe koostamisega, enne kui jõuate ühe lõpliku andmeüksuseni. Kujutage ette olukorda, kus teil on paarsada töövihikut ühendada, enne kui saate oma päeva isegi alustada.
Keegi ei taha kulutada lõputuid tunde erinevate allikate kallal töötamisele, iga töövihiku avamisele, erinevatelt lehtedelt andmete kopeerimisele ja kleepimisele, enne kui lõpuks teeb ühe koondtöövihiku. Mis siis, kui VBA makro saab seda teie heaks teha?
Selle juhendi abil saate luua oma Exceli VBA makrokoodi, et koondada mitu töövihikut, seda kõike mõne minutiga (kui andmefaile on palju).
Eeltingimused oma VBA makrokoodi loomiseks
VBA-koodi paigutamiseks vajate ühte töövihikut, ülejäänud lähteandmete töövihikud on aga eraldi. Lisaks looge üks töövihik Konsolideeritud kõigi töövihikute konsolideeritud andmete salvestamiseks.
Looge kaust Konsolideerimine teie eelistatud asukohas, et salvestada kõik oma lähtetöövihikud. Kui makro käitatakse, lülitub see läbi iga sellesse kausta salvestatud töövihiku, kopeerib sisu erinevatelt lehtedelt ja paigutab selle konsolideeritud töövihikusse.
Oma Exceli VBA koodi loomine
Kui eeltingimused on otsas, on aeg koodi süveneda ja hakata häkkima põhitõdesid, et kohandada seda oma vajadustega.
Seotud: Microsoft Exceli täiustatud funktsioonid, mida peate teadma
Vajutage nuppu Alt+F11 klahvi Excelis, et avada VBA makrokoodi redaktor. Kleepige allpool kirjutatud kood ja salvestage fail makro toega töövihikuna (.xlsm laiendus).
Alam avatud failid ()
"deklareerige VBA-koodis kasutatavad muutujad
Dim MyFolder stringina, MyFile stringina, wbmain töövihikuna, lastrow nii pikk
"Keelake need funktsioonid kooditöötluse tõhustamiseks
Koos rakendusega
.DisplayAlerts = Vale
.ScreenUpdating = Vale
Lõpetamuutke kausta teed, kuhu teie failid salvestatakse
MyFolder = InputBox("Sisestage konsolideerimiskausta tee") & "\"
"määratlege makromuutujas kausta viide
MyFile = Dir (MyFolder)
'avage tsükkel, et sirvida läbi iga kausta salvestatud töövihiku
Tehke, kui Len (Minu fail) > 0
Aktiveerige konsolideerimise töövihik
Windows ("Konsolideerimine"). Aktiveerige
'Arvutage viimane täidetud rida
Vahemik("a1048576").Valige
Valik. Lõpeta (xlUp). Valige
ActiveCell. Nihe (1, 0).Valige'avage esimene töövihik kaustas Konsolideerimine
Töövihikud. Ava Filename:=MyFolder & MyFile
Windows (MyFile). Aktiveerige
'lülitage andmete kopeerimiseks töövihikutes igal lehel läbi
Dim ws töölehena
Iga ws arvutustabelitesws. Aktiveerige
ws. AutoFilterMode = VäärIgnoreeri päist ja kopeeri andmed reast 2
Kui lahtrid (2, 1) = "", siis minge 1Mine 10
1: Järgmine
10: Vahemik("a2:az20000").Kopeeri
Windows ("Konsolideerimine"). Aktiveerige
kleepige kopeeritud sisu
ActiveSheet. Kleebi
Windows (MyFile). Aktiveerige
Pärast andmete kleepimist sulgege avatud töövihik
Aktiivne tööraamat. Sulge
Tühjendage vahemälu, et salvestada järgmise töövihiku väärtus
Minu fail = Dir()
'avage kaustas järgmine fail
Loop
lubage keelatud funktsioonid edaspidiseks kasutamiseks
Koos rakendusega
.DisplayAlerts = Tõene
.ScreenUpdating = Tõene
Lõpeta
Lõpeta alam
VBA koodi selgitus
Koodi esimene osa määratleb alamprogrammi, mis hoiab kogu teie VBA koodi. Defineerige alamprogramm nupuga alam, millele järgneb koodi nimi. Alamnimi võib olla ükskõik milline; ideaaljuhul peaksite säilitama kirjutatava koodiga seotud nime.
Seotud: Veebisaidid ja ajaveebid Exceli näpunäidete ja näpunäidete õppimiseks
Excel VBA mõistab kasutaja loodud muutujaid ja nende vastavaid andmetüüpe, mis on deklareeritud hämar (mõõde).
Koodi töötlemise kiiruse suurendamiseks saate ekraani värskendamise välja lülitada ja kõik hoiatused maha suruda, kuna see aeglustab koodi täitmist.
Kasutajalt küsitakse andmefailide salvestamise kausta tee. Luuakse tsükkel iga kaustas salvestatud töövihiku avamiseks, andmete kopeerimiseks igalt lehelt ja lisamiseks Konsolideerimine töövihik.
Konsolideerimise töövihik on aktiveeritud, et Excel VBA saaks arvutada viimase täidetud rea. Töölehe viimane lahter valitakse ja töövihiku viimane rida arvutatakse nihkefunktsiooni abil. See on väga kasulik, kui makro hakkab lähtefailidest andmeid lisama.
Kui silmus avab esimese lähtefaili, eemaldatakse filtrid igalt lehelt (kui need olemas) ning andmed vahemikus A2 kuni AZ20000 kopeeritakse ja kleebitakse konsolideerimisse. töövihik.
Protsessi korratakse, kuni kõik töövihiku lehed on põhitöövihikusse lisatud.
Seotud: Parimad veebikursused edasijõudnute Exceli valdamiseks
Lõpuks suletakse lähtefail, kui kõik andmed on kleebitud. Järgmine töövihik avatakse, et VBA-makro saaks korrata samu samme järgmise failikomplekti jaoks.
Silmus on kodeeritud töötama, kuni kõik failid on põhitöövihikus automaatselt värskendatud.
Kasutajapõhised kohandused
Mõnikord ei taha te sisseehitatud viipade pärast muretseda, eriti kui olete lõppkasutaja. Kui soovite pigem kõvasti kodeerida koodis oleva konsolideerimiskausta tee, saate seda koodiosa muuta:
MyFolder = InputBox("Sisestage konsolideerimiskausta tee") & "\"
Kellele:
MyFolder = "Kausta tee" & "\"
Lisaks saate muuta ka veergude viiteid, kuna see samm ei sisaldu selles koodis. Lihtsalt asendage lõpu veeru viide oma viimase täidetud veeru väärtusega (antud juhul AZ). Peate meeles pidama, et viimane täidetud rida arvutatakse makrokoodi kaudu, seega peate muutma ainult veeru viidet.
Selle makro maksimaalseks kasutamiseks saate seda kasutada ainult samas vormingus töövihikute konsolideerimiseks. Kui struktuurid on erinevad, ei saa te seda VBA makrot kasutada.
Mitme töövihiku konsolideerimine Exceli VBA makro abil
Exceli VBA koodi loomine ja muutmine on suhteliselt lihtne, eriti kui mõistate mõnda koodi nüanssi. VBA jookseb süstemaatiliselt läbi iga koodirea ja täidab seda ridade kaupa.
Kui teete koodis muudatusi, peate tagama, et te ei muuda koodide järjekorda, kuna see häirib koodi täitmist.
Muutke andmehaldus nende Exceli makrode abil imelihtsaks.
Loe edasi
- Programmeerimine
- Programmeerimine
- Microsoft Excel
Gaurav Siyal on kaheaastane kirjutamiskogemus, kirjutades mitmetele digitaalse turunduse ettevõtetele ja tarkvara elutsükli dokumentidele.
Liituge meie uudiskirjaga
Liituge meie uudiskirjaga tehniliste näpunäidete, arvustuste, tasuta e-raamatute ja eksklusiivsete pakkumiste saamiseks!
Tellimiseks klõpsake siin