A VBA évek óta része a Microsoft Office csomagnak. Noha nem rendelkezik a teljes VB alkalmazás teljes funkcionalitásával és erejével, a VBA rugalmasságot nyújt az Office felhasználók számára az Office termékek integrálásához és az azokban végzett munka automatizálásához.
Az egyik legerősebb eszköz A VBA-ban elérhető az a képesség, hogy az adatok teljes tartományát betölti egyetlen változóba, amelyet tömbnek hívnak. Az adatok ilyen módon történő betöltésével számos módon manipulálhatja vagy elvégezheti a számításokat ezen a tartományon.
Tehát mi a VBA tömb? Ebben a cikkben megválaszoljuk a kérdést, és megmutatjuk, hogyan kell használni azt a a saját VBA szkript.
Mi az a VBA tömb?
VBA használatával Az Excel tömb nagyon egyszerű, de a tömbök fogalmának megértése kicsit összetett lehet, ha még soha nem használta őket.
Gondoljon egy tömbre, mint egy doboz, amelynek benne vannak szakaszai. Az egydimenziós tömb egy doboz, egy szekciósorral. A kétdimenziós tömb egy doboz, amely két szakaszból áll.
A „mező” minden szakaszába adatait tetszőleges sorrendben helyezheti el.
In_content_1 all: [300x250] / DFP: [640x360]->A VBA szkript elején meg kell határoznia ezt a „mezőt” a VBA tömb meghatározásával. Tehát egy olyan adatsort (egydimenziós tömb) tároló tömb létrehozásához a következő sort kell írni:
Dim arrMyArray(1 To 6) As String
A program későbbi részében elhelyezhet adatokat a tömb bármely szakaszába, a zárójelben lévő szakaszra hivatkozva.
arrMyArray(1) = "Ryan Dube"
Készíthet egy kétdimenziós tömböt a következő sor használatával.
Dim arrMyArray(1 To 6,1 to 2) As Integer
Az első szám a sort jelöli, a második pedig az oszlopot. Tehát a fenti tömb hat sorot és 2 oszlopot tartalmazhat.
A tömb bármely elemét az alábbiak szerint töltheti be.
arrMyArray(1,2) = 3
Ez a 3-at tölti be a B1 cellába.
Egy tömb bármilyen típusú adatot képes tárolni szokásos változóként, például karakterláncokat, logikai értékeket, egész számokat, úszókat és így tovább.
A a zárójelben lévő szám is változó lehet. A programozók általában a For Loop használatával számolják a tömb összes szakaszát, és betöltsék a táblázatba az adatcellákat a tömbbe. A cikk későbbi részében megtudhatja, hogyan lehet ezt megtenni.
VBA tömb programozása az Excel programban
Vessen egy pillantást egy egyszerű programra, amelybe esetleg információt szeretne tölteni. egy táblázatból egy többdimenziós tömbbe.
Példaként nézzük meg a termékértékesítési táblázatot, ahol ki szeretné húzni az eladó képviselőjének nevét, elemét és az összes eladást a táblázatból.
Vegye figyelembe, hogy a VBA-ban sorok vagy oszlopok hivatkozásakor a sorok és oszlopok számot a bal felső sarokban 1-vel kezdjük. Tehát a rep oszlop 3, az elem oszlop 4, és az összes oszlop 7.
A három oszlop mind a 11 sorra történő betöltéséhez be kell írnia a következő szkriptet.
Dim arrMyArray(1 To 11, 1 To 3) As String
Dim i As Integer, j As Integer
For i = 2 To 12
For j = 1 To 3
arrMyArray(i-1, j) = Cells(i, j).Value
Next j
Next i
Megfigyelheti, hogy a fejléc sor átugorásához az első A megjelenés sorának 2-nél kell kezdődnie, nem pedig 1-nél. Ez azt jelenti, hogy kivonnia kell a tömb sorértékének 1-ét, amikor a cellák értékét a tömbbe a Cells (i, j) .Value használatával.
A VBA tömb szkript beillesztése
A VBA szkript programozásához az Excel programban a VBA szerkesztő. Ezt a Fejlesztőmenü kiválasztásával és a szalag Vezérlők szakaszában a Kód megtekintéseelem kiválasztásával érheti el.
Ha nem látja a Fejlesztőt a menüben, akkor add hozzá. Ehhez válassza a Fájlés az Opciókelemet az Excel Opciók ablak megnyitásához.
Változtassa meg a választási parancsokat a legördülő menüből az Összes parancs-ra. A bal oldali menüből válassza a Fejlesztőlehetőséget, majd válassza a Hozzáadásgombot a jobb oldali ablaktáblába való áthelyezéshez. Jelölje be a jelölőnégyzetet, hogy engedélyezze, majd válassza az OK-ot a befejezéshez.
Amikor megnyílik a Kódszerkesztő ablak, ellenőrizze, hogy a bal oldali ablaktáblán az adatlapja van-e kiválasztva. A bal oldali legördülő menüben válassza a Munkalap, a jobb oldalon pedig az Aktiváláslehetőséget. Ezzel létrejön egy új Munkalap_Aktiválás () nevű szubrutin.
Ez a funkció a táblázati fájl megnyitásakor fut. Illessze be a kódot a szkript ablaktáblájába ezen a szubrutinon belül.
Ez a szkript a 12 sorban fog működni, és betölti a rep nevét a 3. oszlopból, az elemet a 4. oszlopból és a teljes eladást a 7. oszlopból.
Miután mindkét hurok kész, a kétdimenziós tömb Az arrMyArray tartalmazza az összes adatot, amelyet az eredeti lapon megadott.
Tömbök manipulálása az Excel VBA-ban
Tegyük fel, hogy 5% -os forgalmi adót kíván alkalmazni az összes végső eladási árra. , majd az összes adatot egy új lapra írja.
Ezt megteheti úgy, hogy az első után hozzáad egy másik For hurkot, egy paranccsal, hogy az eredményeket egy új lapra írja.
For k = 2 To 12
Sheets("Sheet2").Cells(k, 1).Value = arrMyArray(k - 1, 1)
Sheets("Sheet2").Cells(k, 2).Value = arrMyArray(k - 1, 2)
Sheets("Sheet2").Cells(k, 3).Value = arrMyArray(k - 1, 3)
Sheets("Sheet2").Cells(k, 4).Value = arrMyArray(k - 1, 3) * 0.05
Next k
Ezzel a teljes tömb a Sheet2-hez „lerakódik”, egy további sorral együtt, amely az adó összegének 5% -ával szorozva van.
a kapott lap így néz ki.
Mint láthatja, az Excel VBA tömbjei rendkívül hasznosak és sokoldalúak, mint a bármilyen más Excel trükk.
A fenti példa egy tömb nagyon egyszerű használatát jelenti. Készíthet sokkal nagyobb tömböket, és elvégezhet rendezést, átlagolást vagy sok más funkciót az azokban tárolt adatok alapján.
Ha valóban kreatív akar lenni, akkor akár két tömböt is létrehozhat sejttartományt tartalmazó két különböző lapból, és végezzen számításokat az egyes tömb elemei között.
Az alkalmazásokat csak a képzelet korlátozza.