Kun työskentelet erilaisten tietolähteiden kanssa, saatat usein vaikeuksia koota useita työkirjoja ja laskentataulukoita ennen kuin pääset yhteen lopulliseen tietoon. Kuvittele tilanne, jossa sinulla on muutama sata työkirjaa yhdistettävänä ennen kuin voit edes aloittaa päiväsi.
Kukaan ei halua viettää loputtomasti tunteja eri lähteiden parissa työskentelemiseen, jokaisen työkirjan avaamiseen, tietojen kopioimiseen ja liittämiseen eri arkeilta ennen kuin lopulta tehdään yksi konsolidoitu työkirja. Mitä jos VBA-makro voi tehdä tämän puolestasi?
Tämän oppaan avulla voit luoda oman Excel VBA -makrokoodin useiden työkirjojen yhdistämiseksi muutamassa minuutissa (jos datatiedostoja on paljon).
Edellytykset oman VBA-makrokoodin luomiseen
Tarvitset yhden työkirjan VBA-koodin säilyttämiseen, kun taas muut lähdetietotyökirjat ovat erillisiä. Luo lisäksi yksi työkirja Konsolidoitu tallentaaksesi yhdistetyt tiedot kaikista työkirjoistasi.
Luo kansio Konsolidointi haluamassasi paikassa tallentaaksesi kaikki lähdetyökirjasi. Kun makro suoritetaan, se vaihtaa jokaisen tähän kansioon tallennettuun työkirjaan, kopioidaan sisällön eri taulukoista ja sijoittaa sen yhdistettyyn työkirjaan.
Oman Excel VBA -koodin luominen
Kun edellytykset ovat poissa tieltä, on aika syventyä koodiin ja alkaa hakkeroida perusasiat mukauttaaksesi sitä vaatimuksiisi.
Aiheeseen liittyvä: Microsoft Excelin lisäominaisuudet, jotka sinun on tiedettävä
paina Alt+F11 näppäin Excelissä avataksesi VBA-makrokoodieditorin. Liitä alla kirjoitettu koodi ja tallenna tiedosto makrokäyttöisenä työkirjana (.xlsm laajennus).
Ali avoimet tiedostot()
'ilmoita VBA-koodissa käytetyt muuttujat
Dim MyFolder merkkijonona, MyFile merkkijonona, wbmain työkirjana, viimeinen rivi yhtä pitkä
Poista nämä toiminnot käytöstä koodinkäsittelyn tehostamiseksi
Sovelluksen kanssa
.DisplayAlerts = False
.ScreenUpdating = Väärin
Lopeta kanssaMuuta sen kansion polkua, johon tiedostosi tallennetaan
MyFolder = InputBox("Anna konsolidointikansion polku") & "\"
'määritä kansion viite makromuuttujassa
MyFile = Dir (MyFolder)
Avaa silmukka selataksesi jokaista kansioon tallennettua työkirjaa
Tee kun Len (Omatiedosto) > 0
Aktivoi yhdistämistyökirja
Windows("Yhdistäminen"). Aktivoi
'laske viimeinen täytetty rivi
Alue("a1048576").Valitse
Valinta. Lopeta (xlUp).Valitse
ActiveCell. Offset (1, 0).ValitseAvaa ensimmäinen työkirja Consolidation-kansiosta
Työkirjat. Avaa Filename:=MyFolder & MyFile
Windows (MyFile). Aktivoi
Kopioi tiedot siirtymällä työkirjojen jokaisen arkin läpi
Dim ws As Worksheet
Jokaiselle ws taulukoissaws. Aktivoida
ws. AutoFilterMode = FalseOhita otsikko ja kopioi tiedot riviltä 2
Jos solut (2, 1) = "" Siirry sitten 1Siirry kohtaan 10
1: Seuraava
10: Alue("a2:az20000"). Kopioi
Windows("Yhdistäminen"). Aktivoi
'liitä kopioitu sisältö
ActiveSheet. Liitä
Windows (MyFile). Aktivoi
Sulje avoin työkirja, kun tiedot on liitetty
ActiveWorkbook. kiinni
'tyhjennä välimuisti tallentaaksesi seuraavan työkirjan arvon
MyFile = Dir()
'avaa kansion seuraava tiedosto
Silmukka
Ota käytöstä poistetut toiminnot käyttöön tulevaa käyttöä varten
Sovelluksen kanssa
.DisplayAlerts = Tosi
.ScreenUpdating = Totta
Lopeta kanssa
Lopeta ala
VBA-koodi selitetty
Koodin ensimmäinen osa määrittää aliohjelman, joka sisältää kaiken VBA-koodisi. Määritä aliohjelma komennolla sub, jota seuraa koodin nimi. Alanimi voi olla mikä tahansa; Ihannetapauksessa sinun tulisi säilyttää nimi, joka liittyy kirjoittamaasi koodiin.
Aiheeseen liittyvä: Web-sivustot ja blogit, joiden avulla voit oppia Excel-vinkkejä ja temppuja
Excel VBA ymmärtää käyttäjien luomat muuttujat ja niitä vastaavat tietotyypit, joilla on ilmoitettu himmeä (ulottuvuus).
Parantaaksesi koodisi käsittelynopeutta, voit sammuttaa näytön päivityksen ja estää kaikki hälytykset, koska tämä hidastaa koodin suorittamista.
Käyttäjältä kysytään sen kansion polkua, johon datatiedostot on tallennettu. Luodaan silmukka avaamaan jokainen kansioon tallennettu työkirja, kopioimaan tiedot kustakin arkista ja liittämään ne Konsolidointi työkirja.
Konsolidointityökirja aktivoidaan, jotta Excel VBA voi laskea viimeisen täytetyn rivin. Laskentataulukon viimeinen solu valitaan ja viimeinen rivi lasketaan työkirjan sisällä offset-funktiolla. Tämä on erittäin hyödyllistä, kun makro alkaa liittää tietoja lähdetiedostoista.
Kun silmukka avaa ensimmäisen lähdetiedoston, suodattimet poistetaan jokaiselta arkilta (jos ne olemassa), ja tiedot A2:sta AZ20000:een kopioidaan ja liitetään konsolidointiin. työkirja.
Prosessi toistetaan, kunnes kaikki työkirjan arkit on liitetty päätyökirjaan.
Aiheeseen liittyvä: Parhaat online-kurssit edistyneen Excelin hallitsemiseen
Lopuksi lähdetiedosto suljetaan, kun kaikki tiedot on liitetty. Seuraava työkirja avataan, jotta VBA-makro voi toistaa samat vaiheet seuraavalle tiedostojoukolle.
Silmukka on koodattu toimimaan, kunnes kaikki tiedostot päivitetään automaattisesti päätyökirjaan.
Käyttäjäkohtaiset mukautukset
Joskus et halua huolehtia sisäänrakennetuista kehotteista, varsinkin jos olet loppukäyttäjä. Jos haluat mieluummin koodata Consolidation-kansion polun koodissa, voit muuttaa tätä koodin osaa:
MyFolder = InputBox("Anna konsolidointikansion polku") & "\"
Vastaanottaja:
MyFolder = "Kansion polku" & "\"
Lisäksi voit myös muuttaa sarakeviittauksia, koska vaihe ei sisälly tähän koodiin. Korvaa vain loppusarakkeen viittaus viimeksi täytetyllä sarakkeen arvolla (tässä tapauksessa AZ). Muista, että viimeksi täytetty rivi lasketaan makrokoodin avulla, joten sinun on vaihdettava vain sarakeviittaus.
Jotta saat kaiken irti tästä makrosta, voit käyttää sitä vain samassa muodossa olevien työkirjojen yhdistämiseen. Jos rakenteet ovat erilaiset, et voi käyttää tätä VBA-makroa.
Useiden työkirjojen yhdistäminen Excel VBA -makrolla
Excel VBA -koodin luominen ja muokkaaminen on suhteellisen helppoa, varsinkin jos ymmärrät joitain koodin vivahteita. VBA juoksee systemaattisesti jokaisen koodirivin läpi ja suorittaa sen rivi riviltä.
Jos teet muutoksia koodiin, varmista, että et muuta koodien järjestystä, koska se häiritsee koodin suorittamista.
Tee tiedonhallinnasta helppoa näiden Excel-makrojen avulla.
Lue Seuraava
- Ohjelmointi
- Ohjelmointi
- Microsoft Excel
Gaurav Siyalilla on kahden vuoden kirjoituskokemus, joka on kirjoittanut sarjalle digitaalisia markkinointiyrityksiä ja ohjelmistojen elinkaaridokumentteja.
tilaa uutiskirjeemme
Liity uutiskirjeemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia e-kirjoja ja eksklusiivisia tarjouksia!
Klikkaa tästä tilataksesi