Amikor változatos adatforrásokkal dolgozik, gyakran nehézségekbe ütközhet több munkafüzet és munkalap összeállítása, mielőtt egyetlen végső adathoz érne. Képzeljen el egy olyan helyzetet, amikor néhány száz munkafüzetet kell kombinálnia, mielőtt elkezdheti a napot.

Senki sem akar végtelenül sok időt tölteni azzal, hogy különböző forrásokon dolgozzon, minden munkafüzetet megnyitva, különböző lapokról másolja és illessze be az adatokat, mielőtt végre elkészítené egy összevont munkafüzetet. Mi van, ha egy VBA makró megteheti ezt helyetted?

Ezzel az útmutatóval létrehozhatja saját Excel VBA makrókódját, amellyel több munkafüzetet konszolidálhat, mindezt percek alatt (ha sok az adatfájl).

Előfeltételek saját VBA makrókód létrehozásához

Egy munkafüzetre van szüksége a VBA-kód elhelyezéséhez, míg a többi forrásadat-munkafüzet különálló. Ezenkívül hozzon létre egy munkafüzetet Összevont hogy tárolja az összes munkafüzet konszolidált adatait.

Hozzon létre egy mappát Konszolidáció a kívánt helyen az összes forrásmunkafüzet tárolásához. Amikor a makró fut, átvált az ebben a mappában tárolt munkafüzetek között, átmásolja a különböző lapok tartalmát, és elhelyezi az összevont munkafüzetben.

instagram viewer

Saját Excel VBA kód létrehozása

Ha az előfeltételek már nincsenek útban, ideje elmélyedni a kódban, és elkezdeni feltörni az alapokat, hogy az igényeidhez igazíthasd.

Összefüggő: A Microsoft Excel speciális funkciói, amelyeket ismernie kell

megnyomni a Alt+F11 billentyűt az Excelben a VBA makrókód-szerkesztő megnyitásához. Illessze be az alább írt kódot, és mentse a fájlt makróképes munkafüzetként (.xlsm kiterjesztés).

Sub openfiles()

'deklarálja a VBA-kódon belül használt változókat

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

A kódfeldolgozás javítása érdekében tiltsa le ezeket a funkciókat

Alkalmazással
.DisplayAlerts = Hamis
.ScreenUpdating = Hamis
Vége ezzel

Módosítsa annak a mappának az elérési útját, ahová a fájlokat menteni szeretné

MyFolder = InputBox("Adja meg a konszolidációs mappa elérési útját") & "\"

'adja meg a mappa hivatkozását egy makróváltozóban

MyFile = Dir (MyFolder)

Nyisson meg egy hurkot a mappában tárolt egyes munkafüzetek közötti lapozáshoz

Tedd meg, amíg Len (MyFile) > 0

aktiválja a Konszolidációs munkafüzetet

Windows("Konszolidáció"). Aktiválja

'számolja ki az utolsó kitöltött sort

Tartomány("a1048576"). Válassza a lehetőséget
Kiválasztás. Vége (xlUp).Válassza ki
ActiveCell. Eltolás (1, 0).Válassza ki

Nyissa meg az első munkafüzetet a Konszolidáció mappában

Munkafüzetek. Nyissa meg a Filename:=MyFolder & MyFile

Windows (MyFile). Aktiválja

Az adatok másolásához váltson át a munkafüzetek egyes lapjai között

Dim ws munkalapként
Minden ws In Sheets

ws. Aktiválja
ws. AutoFilterMode = False

'hagyja figyelmen kívül a fejlécet, és másolja ki az adatokat a 2. sorból
Ha Cells (2, 1) = "" Akkor Ugrás 1

Ugrás a 10-re

1: Következő

10: Tartomány("a2:az20000").Másolás

Windows("Konszolidáció"). Aktiválja

'illessze be a másolt tartalmat

ActiveSheet. Paszta

Windows (MyFile). Aktiválja

„Az adatok beillesztése után zárja be a megnyitott munkafüzetet

ActiveWorkbook. Bezárás

'ürítse ki a gyorsítótárat a következő munkafüzet értékének tárolásához

Saját fájl = Dir()

Nyissa meg a következő fájlt a mappában

Hurok

'engedélyezze a letiltott funkciókat későbbi használatra

Alkalmazással
.DisplayAlerts = Igaz
.ScreenUpdating = Igaz
Vége ezzel

Vége Sub

A VBA kód magyarázata

A kód első része egy szubrutin meghatározása, amely az összes VBA-kódot tartalmazza. Határozza meg az alprogramot a alatti, majd a kód neve. Az alnév bármi lehet; ideális esetben meg kell tartania egy olyan nevet, amely releváns az írandó kódhoz.

Összefüggő: Weboldalak és blogok az Excel tippek és trükkök megtanulásához

Az Excel VBA megérti a felhasználók által létrehozott változókat és a hozzájuk tartozó, deklarált adattípusokat homályos (dimenzió).

A kód feldolgozási sebességének növelése érdekében kikapcsolhatja a képernyő frissítését, és letilthatja az összes figyelmeztetést, mivel ez lelassítja a kód végrehajtását.

A felhasználótól meg kell adni az adatfájlok tárolására szolgáló mappa elérési útját. Létrejön egy hurok, amely megnyitja a mappában tárolt minden munkafüzetet, átmásolja az adatokat az egyes lapokról, és hozzáfűzi a Konszolidáció munkafüzet.

A Konszolidáció munkafüzet aktiválva van, így az Excel VBA ki tudja számítani az utoljára kitöltött sort. A munkalapon belüli utolsó cella kerül kijelölésre, és a munkafüzet utolsó sora kerül kiszámításra az eltolási függvény segítségével. Ez nagyon hasznos, ha a makró elkezdi hozzáfűzni az adatokat a forrásfájlokból.

Ahogy a hurok megnyitja az első forrásfájlt, a szűrők minden egyes lapról eltávolítódnak (ha léteznek), és az A2-től AZ20000-ig terjedő adatokat a rendszer átmásolja és beilleszti a konszolidációba. munkafüzet.

A folyamat addig ismétlődik, amíg az összes munkafüzetlap hozzá nem fűződik a fő munkafüzethez.

Összefüggő: A legjobb online kurzusok a haladó Excel elsajátításához

Végül az összes adat beillesztése után a forrásfájl bezárul. A következő munkafüzet megnyílik, így a VBA makró meg tudja ismételni ugyanazokat a lépéseket a következő fájlkészlettel.

A ciklus kódolva fut, amíg az összes fájl automatikusan frissül a fő munkafüzetben.

Felhasználó alapú testreszabások

Néha nem kell aggódnia a beépített promptok miatt, különösen, ha Ön a végfelhasználó. Ha inkább a Konszolidáció mappa elérési útját szeretné a kódban kódolni, módosíthatja a kód ezen részét:

MyFolder = InputBox("Adja meg a konszolidációs mappa elérési útját") & "\"

Nak nek:

MyFolder = "Mappa elérési útja" & "\"

Ezenkívül módosíthatja az oszlophivatkozásokat is, mivel ez a lépés nem szerepel ebben a kódban. Csak cserélje ki a záróoszlop hivatkozását az utolsó kitöltött oszlopértékre (ebben az esetben AZ). Ne feledje, hogy az utoljára kitöltött sort a makrókód számítja ki, ezért csak az oszlophivatkozást kell módosítania.

Ahhoz, hogy a legtöbbet hozza ki ebből a makróból, csak az azonos formátumú munkafüzetek konszolidálására használhatja. Ha a struktúrák eltérőek, akkor nem használhatja ezt a VBA-makrót.

Több munkafüzet konszolidálása Excel VBA makró használatával

Az Excel VBA-kódok létrehozása és módosítása viszonylag egyszerű, különösen, ha ismeri a kód néhány árnyalatát. A VBA szisztematikusan végigfut minden kódsoron, és soronként végrehajtja azokat.

Ha bármilyen módosítást végez a kódon, gondoskodnia kell arról, hogy ne változtassa meg a kódok sorrendjét, mivel ez megzavarja a kód végrehajtását.

5 nagyszerű Microsoft Excel makró az adatok rendezéséhez

Tegye gyerekjátékká az adatkezelést ezekkel az Excel makróval.

Olvassa el a következőt

RészvényCsipogEmail
Kapcsolódó témák
  • Programozás
  • Programozás
  • Microsoft Excel
A szerzőről
Gaurav Siyal (19 cikk megjelent)

Gaurav Siyal két éves írási tapasztalattal rendelkezik, számos digitális marketingcégnek ír és szoftver-életciklus-dokumentumokat írt.

Továbbiak Gaurav Siyaltól

Iratkozzon fel hírlevelünkre

Csatlakozzon hírlevelünkhöz műszaki tippekért, ismertetőkért, ingyenes e-könyvekért és exkluzív ajánlatokért!

Kattintson ide az előfizetéshez