excel vba array array methods with examples
Tento výukový program pomocou príkladov programovania vysvetlí pole VBA, rôzne typy polí, varianty polí a metódy polí:
Bežná premenná VBA je zástupný symbol, ktorý uchováva hodnotu jednotlivých údajov. Má vzťah 1: 1, tj. 1 premenná pre 1 hodnotu.
Teraz si predstavte ukladanie viacerých hodnôt, ktoré sú rovnakého typu. Namiesto vytvárania viacerých premenných stačí vytvoriť jednu premennú a uložiť všetky rovnaké typy hodnôt. Táto premenná sa nazýva POLI.
=> Navštívte tu a pozrite si sériu školení VBA pre všetkých
najlepší softvér na čistenie počítača
V tomto výučbe sa dozviete, čo je pole VBA, jednorozmerné a dvojrozmerné polia spolu s rôznymi typmi polí, ako sú pevné a dynamické. Pochopíme tiež rôzne metódy polí, ktoré sa používajú vo VBA.
Čo sa dozviete:
Pole VBA
Polia sú špeciálny druh premennej, ktorá dokáže ukladať viac hodnôt rovnakého dátového typu.
Napríklad, ak máte mená 100 zamestnancov, môžete namiesto vytvorenia 100 premenných reťazca údajového typu vytvoriť iba jednu premennú poľa typu string a priradiť 100 hodnôt k tej istej premennej poľa.
Jedno dimenzionálne pole
Pole, ktoré má všetky prvky v jednom riadku alebo v jednom stĺpci, sa nazýva jednorozmerné pole. Príkladom jednorozmerného poľa je uvedenie mien všetkých študentov v triede v jednom stĺpci. Deklaruje sa, ako je uvedené nižšie.
Dim pole name (lowerbound To UpperBound) As DataType
Existuje niekoľko spôsobov, ako deklarovať pole. Ďalej uvádzame niekoľko príkladov.
Príklad:
# 1) Dim MyArrayExample (0 až 3) ako celé číslo
Vytvorí pole s umiestnením 0,1,2,3, ktoré bude akceptovať celočíselné hodnoty.
# 2) Dim MyArray2 (3) ako reťazec
Predvolené hodnoty sú od 0 do 3 a vytvorí sa pole s umiestnením 0,1,2,3, ktoré bude akceptovať hodnoty reťazca.
# 3) Dim MyArray2 (13 až 15) ako dvojnásobok
Vytvorí pole začínajúce od 13, t. J. 13, 14 a 15, a akceptuje dvojnásobné hodnoty. Spomenuli sme dolnú hranicu ako 13, takže pole začne prideľovať hodnoty skôr z polohy 13 ako z 0.
Vytvorme jednoduchý kód a pochopme všetky 3 spôsoby deklarácie poľa.
Poznámka: Písanie kódu VB Open Microsoft Excel (podporované verzie sú Excel 2007, 2010, 2013, 2016, 2019). Prejdite na Karta Vývojár -> Visual Basic (Prípadne použite skratku Alt + F11). V editore VB kliknite na Vložiť -> Modul a vložte nasledujúci kód.
Zvážte nasledujúci postup, ktorý ukazuje rôzne typy vyhlásení.
Private Sub arrayExample1() Dim firstQuarter(0 To 2) As String ‘creates array with index 0,1,2 firstQuarter(0) = 'Jan' firstQuarter(1) = 'Feb' firstQuarter(2) = 'Mar' MsgBox 'First Quarter in calendar ' & ' ' & firstQuarter(0) & ' ' & firstQuarter(1) & ' ' & firstQuarter(2) End Sub Private Sub arrayExample2() Dim secondQuarter(2) As String ‘creates array with index 0,1,2 secondQuarter(0) = 'April' secondQuarter(1) = 'May' secondQuarter(2) = 'June' MsgBox 'Second Quarter in calendar ' & ' ' & secondQuarter(0) & ' ' & secondQuarter(1) & ' ' & secondQuarter(2) End Sub Private Sub arrayExample3() Dim thirdQuarter(13 To 15) As String ‘creates array with index 13,14,15 thirdQuarter(13) = 'July' thirdQuarter(14) = 'Aug' thirdQuarter(15) = 'Sep' MsgBox 'Third Quarter in calendar ' & ' ' & thirdQuarter(13) & ' ' & thirdQuarter(14) & ' ' & thirdQuarter(15) End Sub
Stlačením klávesu F5 alebo stlačením tlačidla spustenia na paneli nástrojov spustíte kód.
Regulárna premenná Vs Array
Teraz vieme, ako funguje jednorozmerné pole. Poďme si teda na chvíľu uvedomiť, prečo sú polia v programovacích jazykoch také dôležité.
Predpokladajme, že musíte zadať plat 5 zamestnancov. Aby ste to dosiahli pomocou regulárnej premennej, musíte vytvoriť 5 premenných.
Public Sub RegularVariable() Dim shet As Worksheet Set shet = ThisWorkbook.Worksheets('Sheet1') ' Declare variable for each student Dim Emp1 As String Dim Emp2 As String Dim Emp3 As String Dim Emp4 As String Dim Emp5 As String ' Read student marks from cell Emp1 = shet.Range('A' & 2).Value Emp2 = shet.Range('A' & 3).Value Emp3 = shet.Range('A' & 4).Value Emp4 = shet.Range('A' & 5).Value Emp5 = shet.Range('A' & 6).Value ' Print student marks Debug.Print 'Emp Name' Debug.Print Emp1 Debug.Print Emp2 Debug.Print Emp3 Debug.Print Emp4 Debug.Print Emp5 End Sub
Teraz vytvorme rovnaký kód pomocou premennej poľa.
Option Explicit Public Sub ArrayVarible() Dim shet As Worksheet Set shet = ThisWorkbook.Worksheets('Sheet1') Dim Employee(1 To 6) As String Dim i As Integer For i = 1 To 6 Employee(i) = shet.Range('A' & i).Value Debug.Print Employee(i) Next i End Sub
Tu sme práve použili jednu premennú poľa, ktorá uloží všetky mená zamestnancov. Predpokladajme, že musíte pridať ďalších 100 mien zamestnancov, potom stačí zmeniť veľkosť poľa a nemusíte vytvárať novú premennú.
Toto zníži počet riadkov v kóde, a tým ho urobí ľahko zrozumiteľným a čitateľným.
Dvojrozmerné pole
Dvojrozmerné pole má 2 indexy - prvý index bude predstavovať riadky a 2. index bude predstavovať stĺpec. Má viac riadkov a stĺpcov a je zvyčajne znázornený vo formáte tabuľky.
Deklarácia 2 dim poľa je nasledovná:
Dim ArrayName (FirstIndex To LastIndex, FirstIndex To LastIndex) ako DataType.
Zvážte príklad ukladania známok 2 študentov získaných v 3 predmetoch. Vytvoríme teda dvojrozmerné pole, ktoré bude obsahovať 2 riadky a 3 stĺpce.
Pole začneme od riadku 1 po riadok 2 a stĺpca 1 po stĺpec 3.
Sub Twodim() Dim totalMarks(1 To 2, 1 To 3) As Integer totalMarks(1, 1) = 23 totalMarks(2, 1) = 34 totalMarks(1, 2) = 33 totalMarks(2, 2) = 55 totalMarks(1, 3) = 45 totalMarks(2, 3) = 44 Msgbox “Total Marks in Row 2 and column 2 is “ &totalMarks(2,2) Msgbox “Total Marks in Row 1 and column 3 is “ &totalMarks(1,3) End Sub
Stlačením F5 alebo stlačením tlačidla spustenia na paneli nástrojov spustíte kód.
Riadok 2 a stĺpec 2
Riadok 1 a stĺpec 3
Pevné polia
Pevné polia, ktoré sa tiež nazývajú statické polia, majú pevnú dolnú a hornú hranicu a túto veľkosť nie je možné zmeniť za behu. Veľkosť poľa je určená počas deklarácie v zátvorkách. Všetky vyššie uvedené príklady sú pevné polia, pretože sme ich počas deklarácie spomenuli.
Pevné polia sa zvyčajne používajú, keď ste si istí veľkosťou poľa. Napríklad, počet dní v týždni, môžete vytvoriť pole s dolnou hranicou 0 a hornou hranicou 6 a ubezpečte sa, že nikdy nezmeníte jeho veľkosť.
Dynamické polia
Dynamické polia nám umožňujú meniť veľkosť poľa počas behu. Sú užitočné, keď si nie ste istí veľkosťou poľa. Predpokladajme, že pri prijatí na vysokú školu si nie ste istí, koľko študentov skutočne prijme prijatie, takže nemôžete určiť veľkosť v čase návrhu alebo vyhlásenia.
Deklarácia dynamického poľa je podobná ako statické pole s prázdnymi zátvorkami.
Dim zamestnanec () ako reťazec
REDIM
Keď chceme zmeniť veľkosť, ktorú musíme použiť REDIM , musíme si uvedomiť, že dolnú hranicu nie je možné zmeniť, môžeme zmeniť iba hornú hranicu poľa.
Sub dynamicArray() Dim dynArray() As String Dim curdate As Date curdate = Now ReDim dynArray(2) ‘ Redim will help to change the array size during runtime dynArray(0) = 'John' dynArray(1) = 'Tom' dynArray(2) = 'Tonny' MsgBox 'Students Enrolled after ' & curdate & ' are “ & dynArray(0) & ', ' & dynArray(1) & ', ' & dynArray(2) End Sub
Teraz vieme, že môžeme zmeniť veľkosť poľa počas behu programu, a preto môžeme príkaz ReDim použiť kedykoľvek, keď potrebujeme zvýšiť ubound poľa. Skúsme ešte raz zväčšiť veľkosť poľa a pridať nové meno študenta.
Sub RedimExample() Dim dynArray() As String Dim curdate As Date curdate = Now Dim size As Integer ReDim dynArray(2) dynArray(0) = 'John' dynArray(1) = 'Tom' dynArray(2) = 'Tonny' MsgBox 'Students Enrolled untill ' & curdate & ' are ' & dynArray(0) & ', ' & dynArray(1) & ', ' & dynArray(2) ReDim dynArray(3) ‘ Redim will reinitialise the array and destroy the old values dynArray(3) = 'John' MsgBox 'Students Enrolled untill ' & curdate & ' are ' & dynArray(0) & ', ' & dynArray(1) & ', ' & dynArray(2) & ' , ' & dynArray(3) End Sub
Boli by ste si všimli, že výsledok neukazoval mená študentov, ktoré boli pridané skôr, dáva nulovú hodnotu. Je to preto, že príkaz Redim vytvorí nové pole s novou veľkosťou a zničí staré hodnoty.
Zachovať ReDim
Príkaz Represerve nám pomáha prekonať obmedzenia ReDim zachovaním starých hodnôt a tým zväčšením veľkosti poľa.
Vyššie uvedený kód prepíšeme pomocou nástroja ReDim Preserve.
Sub preserveExample() Dim dynArray() As String Dim curdate As Date curdate = Now Dim size As Integer ReDim dynArray(2) dynArray(0) = 'John' dynArray(1) = 'Tom' dynArray(2) = 'Tonny' MsgBox 'Students Enrolled untill ' & curdate & ' are ' & dynArray(0) & ', ' & dynArray(1) & ', ' & dynArray(2) ReDim preserve dynArray(3) ‘ Redim preserve will retain the old values dynArray(3) = 'John' MsgBox 'Students Enrolled untill ' & curdate & ' are ' & dynArray(0) & ', ' & dynArray(1) & ', ' & dynArray(2) & ' , ' & dynArray(3) End Sub
Pretože sme použili kľúčové slovo preserve, predtým zadané hodnoty sa nestratia a nová hodnota sa pridá úspešne.
Variantné pole
Doteraz sme videli pole prijímajúce rovnaký typ hodnôt. Teraz poďme deklarovať pole ako variant a uložme rôzne typy údajov, ako sú String, Date, Long, Integer, do jedného poľa.
Príklad:
Sub arrayVariant() Dim arrayData(3) As Variant arrayData(0) = 'Vikram Vikrant' arrayData(1) = 411234567890# arrayData(2) = 38 arrayData(3) = '06-09-1972' MsgBox 'Details of person ' & arrayData(0) & ' is ' & ' Phone No ' & arrayData(1) & ' ,Id ' & arrayData(2) & ' ,DOB ' & arrayData(3) End Sub
Metódy VBA
V poli VBA existuje niekoľko metód, ktoré nám pomôžu vykonávať rôzne funkcie, ako je uvedené nižšie.
Sl. Nie | názov | Syntax | Popis |
---|---|---|---|
7 | Pripojte sa | Pripojiť sa (sourcearray, (oddeľovač)) | Spojí viac podreťazcov v poli a vráti hodnotu reťazca. |
jeden | Pole | Pole (podvodné) | Prevedie bežný variant premenná do poľa. |
dva | Vymazať | Vymazať názov poľa | Používa sa na opätovnú inicializáciu poľa s pevnou veľkosťou a uvoľní pamäť pre dynamické pole. |
3 | IsArray | IsArray (názov premennej) | Určuje, či je premenná pole. |
4 | Lbound | LBound (ArrayName, (Dimension)) | Vráti najnižší dolný index poľa. |
5 | Ubound | UBound (ArrayName, (Dimension)) | Vráti najvyšší dolný index poľa. |
6 | Split | Rozdeliť (výraz, (oddeľovač, (limit, (porovnanie)))) | Rozdelí reťazec na niekoľko podreťazcov a vráti nulové pole. |
8 | Filtrovať | Filter (sourcearray, match, (zahrnúť, (porovnať))) | Filter nám umožní vyhľadávať a zadaná zhoda z poľa. |
Poďme si každú z nich podrobne rozobrať na príklade.
# 1) Pole
Deklarujme regulárnu variantnú premennú a použime ju ako pole. Ak chcete premennú bežnú variantnú premennú zmeniť na pole, musíme použiť znak POLE ako je zobrazené v nasledujúcom príklade.
Funkcie poľa prijímajú argument, ktorý obsahuje hodnoty oddelené čiarkami. Tieto hodnoty sú priradené ako prvok poľa.
Sub variantArray() Dim varData As Variant varData = Array('Mon Bel', '+61 112334123', 567, '06-09-1972') MsgBox 'Details of person ' & varData(0) & ' is ' & ' Phone No ' & varData(1) & ' ,Id ' & varData(2) & ' ,DOB ' & varData(3) End Sub
Musíte identifikovať premennú poľa pomocou indexu, preto sa vo vyššie uvedenom príklade hodnoty načítajú ako varData (0) varData (2) varData (3).
# 2) Vymazať
Táto funkcia vymaže všetky hodnoty zadané pre pole s pevnou veľkosťou a uvoľní miesto v pamäti pre dynamické pole.
Syntax: Vymazať názov poľa
Vymazanie má odlišné správanie pre rôzne typy údajov, ako je uvedené nižšie.
- Pre pevnú číselnú hodnotu: Všetky hodnoty sa vynulujú.
- Pre dátový typ s pevným reťazcom: Všetky hodnoty sa nastavia na nulovú dĺžku.
- Pre dynamické pole: Uvoľní pamäť použitú poľom.
Príklad:
Sub eraseExample() Dim NumArray(3) As Integer Dim decArray(2) As Double Dim strArray(2) As String NumArray(0) = 12345 decArray(1) = 34.5 strArray(1) = 'Erase Function' Dim DynaArray() ReDim DynaArray(3) MsgBox ' Values before Erase ' & (NumArray(0)) & ',' & (decArray(1)) & ' , ' & (strArray(1)) Erase NumArray Erase decArray Erase strArray Erase DynaArray ' Free the memory ' All values are erased. MsgBox ' Values after Erase ' & NumArray(0) & ',' & decArray(1) & ' , ' & strArray(1) End Sub
Výsledok pred použitím funkcie Vymazať
Výsledok po použití možnosti Vymazať
# 3) IsArray
Táto funkcia sa používa na určenie, či daná vstupná premenná je pole alebo nie. Vráti hodnotu true, ak je zadaná premenná hodnota true, inak vráti hodnotu false.
Syntax: IsArray (názov premennej)
Príklad:
Sub isArrayTest() Dim arr1, arr2 As Variant arr1 = Array('Jan', 'Feb', 'Mar') arr2 = '12345' MsgBox ('Is arr1 an Array : ' & IsArray(arr1)) MsgBox ('Is arr2 an Array : ' & IsArray(arr2)) End
Výsledok z prvého Msgboxu
Výsledok z druhého okna msgbox
# 4) Viazané
Vráti najnižší dolný index poľa zadaný ako argument pre funkciu Lbound.
Syntax: LBound (ArrayName, (Dimension))
ArrayName je názov poľa.
Dimenzia je voliteľná celočíselná hodnota. Ak má pole viac dimenzií, môžete určiť, do ktorej dimenzie chcete určiť medznú hodnotu.
Príklad:
Sub lboundTest() Dim Result1, Result2, Result3 Dim ArrayValue(1 To 10, 5 To 15, 10 To 20) ' Declare array variables. Dim Arraywithoutlbound(10) Result1 = LBound(ArrayValue, 1) ' Returns 1. Result2 = LBound(ArrayValue, 3) ' Returns 10. Result3 = LBound(Arraywithoutlbound) MsgBox 'Lowest subscript in first array ' & Result1 & ' lowest subscript in 3rd array ' & Result2 & ' Lowest subscript in Arraywithoutlbound ' & Result3 End Sub
# 5) Ubound
Vráti horný dolný index poľa zadaného ako argument vo funkcii Ubound.
Syntax: UBound (ArrayName, (Dimension))
ArrayName je názov poľa.
Dimenzia je voliteľná celočíselná hodnota. Ak má pole viac dimenzií, môžete určiť, pre ktorú dimenziu chcete určiť Ubound.
aký je najlepší sťahovač mp3
Príklad:
Sub UboundTest() Dim Result1, Result2, Result3 Dim ArrayValue(1 To 10, 5 To 15, 10 To 20) ' Declare array variables. Dim ArraywithoutUbound(10) Result1 = UBound(ArrayValue, 1) Result2 = UBound(ArrayValue, 3) Result3 = UBound(ArraywithoutUbound) MsgBox 'Lowest subscript in first array ' & Result1 & ' lowest subscript in 3rd array ' & Result2 & ' Lowest subscript in Arraywithoutlbound ' & Result3 End Sub
# 6) Rozdeliť
Vráti pole s počtom podreťazcov odvodených z daného celého reťazca.
Syntax: Split (výraz, (oddeľovač, (limit, (porovnanie))))
- Výraz: Toto je celý reťazec, ktorý sa použije na výrobu podreťazcov.
- Oddeľovač: Pomocou zadaného oddeľovača sa vygenerujú podreťazce. Ak to nie je uvedené, potom sa za oddeľovač považuje priestor.
- Limit: Počet vrátených podreťazcov.
- Porovnanie: Po vytvorení podreťazca môžete na otestovanie výsledku použiť rôzne možnosti porovnania.
Príklad: V nasledujúcom príklade používame oddeľovač ako - a limit ako 3.
Funkcia split teda rozdelí celý reťazec na podreťazec na základe oddeľovača. Ale spomenuli sme tiež limit ako 3, takže podreťazce sa nebudú vytvárať po limite 3. Posledný oddeľovač - teda bude preskočený.
Sub splitExample() Dim MyString As String Dim Result() As String Dim DisplayText As String MyString = 'This is the example for-VBA-Split-Function' Result = Split(MyString, '-',3) MsgBox Result(0) & vbNewLine & Result(1) & vbNewLine & Result(2) & vbNewLine & Result(3) End Sub
# 7) Pripojte sa
Toto je pravý opak rozdelenia. Pripojenie vytvorí jeden reťazec kombináciou niekoľkých podreťazcov.
Syntax: Pripojiť sa (sourcearray, (oddeľovač))
Sourcearray: Jednorozmerné pole reťazcov, ktoré chcete spojiť do jednej.
Oddeľovač: Zadaný oddeľovač bude počas pripájania pridaný za každý reťazec.
Príklad:
Sub joinExample() Dim Result As String Dim dirarray(0 To 2) As String dirarray(0) = 'D:' dirarray(1) = 'SoftwareTestingHelp' dirarray(2) = 'Arrays' Result = Join(dirarray, '') MsgBox 'Date after joining ' & Result End Sub
Všetky 3 hodnoty sú spojené a je umiestnené medzi každé slovo, ako sme uviedli ako oddeľovač.
# 8) Filter
Filter nám umožní vyhľadať zadanú zhodu z poľa. Na základe kritérií filtra sa vráti podmnožina reťazcového poľa.
Syntax: Filter (sourcearray, match, (include, (compare)))
Príklad:
Sub filterExample() Dim Mystring As Variant Mystring = Array('Software Testing', 'Testing help', 'Software help') filterString = Filter(Mystring, 'help') MsgBox 'Found ' & UBound(Mystring) - LBound(Mystring) + 1 & ' words matching the criteria ' End Sub
Tento príklad vyhľadá slovo „help“ v celom reťazci poľa pomocou funkcie filtra.
často kladené otázky
Otázka č. 1) Ako zistiť dĺžku poľa vo VBA?
Odpoveď: Na získanie dĺžky poľa používame funkciu Ubound. Táto funkcia nám poskytne horný dolný index zadaného poľa.
Otázka 2) Ako deklarovať pole vo VBA?
Odpoveď: Jednorozmerné pole je deklarované ako je uvedené nižšie.
Dim pole name (lowerbound To UpperBound) As DataType
Príklad: Dim Myarray (0 až 2) ako celé číslo
Dvojrozmerné pole je deklarované tak, ako je uvedené nižšie.
Dim ArrayName (FirstIndex To LastIndex, FirstIndex To LastIndex) ako DataType.
Príklad: Stlmiť značky (1 až 3, 0 až 2) ako celé číslo
Otázka č. 3) Ako previesť rozsah na pole?
Odpoveď: Pomocou funkcie Transpose môžeme rozsah previesť na pole. Tento kód vytvorí Mys (10)
Sub Example() Dim Mys As Variant Mys = Application.Transpose(Range('A1:A10')) End Sub
Otázka č. 4) Čo je variant poľa v VBA?
Odpoveď: Variantné pole prijme pre svoj index všetky druhy dátových typov, t. J. Do jedného poľa môžete uložiť rôzne typy hodnôt.
Príklad:
Dim arrayData (3) As Variant
arrayData (0) = 'Vikas Vipal'
arrayData (1) = 411234567890 #
Otázka č. 5) Čo je to základné vyhlásenie o opciách?
Odpoveď: Používa sa na deklaráciu dolného dolného indexu poľa a používa sa na začiatku modulu. Predvolene je dolný dolný index 0, ak deklarujete Option Base 1 na úrovni modulu, potom bude pre všetky polia predvolený dolný dolný index 1.
Záver
V tomto tutoriáli sme sa naučili, ako sa polia používajú vo VBA, a videli sme, ako sa polia líšia od bežnej premennej. Preskúmali sme jednorozmerné a dvojrozmerné polia s príkladmi. Diskutovali sme tiež o pevných a dynamických poliach.
Na príkladoch boli diskutované spôsoby, ako zmeniť veľkosť poľa počas behu programu a tiež zachovať hodnoty pomocou funkcie redim preserve. Nakoniec sme sa naučili metódy Array, ktoré nám pomôžu pri vykonávaní niekoľkých operácií.
=> Skontrolujte VŠETKY návody VBA tu
Odporúčané čítanie
- Výukový program pre Excel VBA - Úvod do VBA v programe Excel
- Dátové typy VBA - číselné a nečíselné dátové typy vo VBA
- Premenné VBA a voliteľná možnosť vo VBA
- Obrátiť pole v prostredí Java - 3 metódy s príkladmi
- Výukový program Java Array Length s príkladmi kódu
- Jagged Array In Java - návod s príkladmi
- Typy údajov poľa - int pole, dvojité pole, pole reťazcov atď.
- String Array C ++: Implementácia a znázornenie s príkladmi