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.
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 ezzelMó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 kiNyissa 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 Sheetsws. 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 1Ugrá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.
Tegye gyerekjátékká az adatkezelést ezekkel az Excel makróval.
Olvassa el a következőt
- Programozás
- Programozás
- Microsoft Excel
Gaurav Siyal két éves írási tapasztalattal rendelkezik, számos digitális marketingcégnek ír és szoftver-életciklus-dokumentumokat írt.
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