excel vba array array methods with examples
Ta vadnica bo s pomočjo primerov programiranja razložila VBA Array, različne vrste matrike, varianto matrike in metode matrike:
Navadna spremenljivka VBA je imetnik mesta, ki hrani vrednost posameznih podatkov. Ima razmerje 1 do 1, tj. 1 spremenljivka za 1 vrednost.
Zdaj si predstavljajte, da shranite več vrednosti iste vrste. Namesto da ustvarite več spremenljivk, lahko samo ustvarite eno spremenljivko in shranite vse iste vrste vrednosti. Ta spremenljivka se imenuje ARRAY.
=> Obiščite tukaj in si oglejte serijo VBA Training za vse
kako narediti kup v javi
V tej vadnici boste spoznali, kaj je matrika VBA, enodimenzionalne in dvodimenzionalne matrike, skupaj z različnimi vrstami nizov, kot sta Fixed in Dynamic. Razumeli bomo tudi različne metode nizov, ki se uporabljajo v VBA.
Kaj se boste naučili:
Polje VBA
Polji so posebna vrsta spremenljivke, ki lahko shrani več vrednosti istega podatkovnega tipa.
Na primer, če imate imena 100 zaposlenih, lahko namesto ustvarjanja 100 spremenljivk niza podatkovnega tipa ustvarite samo eno spremenljivko polja tipa string in isti spremenljivki polja dodelite 100 vrednosti.
Enodimenzionalna matrika
Matrika, ki ima vse elemente v eni vrstici ali v enem stolpcu, se imenuje enodimenzionalna matrika. Primer navedbe imen vseh učencev v razredu v enem stolpcu je primer enodimenzionalnega polja. Navedena je, kot je prikazano spodaj.
Zatemni ime polja (od spodnjega do zgornjega) kot tip podatkov
Obstaja več načinov za prijavo matrike. Spodaj je nekaj primerov.
Primer:
# 1) Zatemni MyArrayExample (0 do 3) kot celo število
Ustvari matriko z lokacijo 0,1,2,3, ki bo sprejela celoštevilske vrednosti.
# 2) Zatemni MyArray2 (3) kot niz
Privzeto je od 0 do 3 in ustvari matriko z lokacijo 0,1,2,3, ki bo sprejela vrednosti niza.
# 3) Zatemni MyArray2 (13 do 15) kot dvojno
Ustvari matriko, začenši s 13, tj. 13, 14 in 15, in sprejme dvojne vrednosti. Spodnjo mejo smo omenili kot 13, zato bo polje začelo dodeliti vrednosti iz lokacije 13 in ne iz 0.
Ustvarimo preprosto kodo in razumemo vse 3 načine deklaracije matrike.
Opomba: Za pisanje kode VB Odprite Microsoft Excel (podprte različice so Excel 2007, 2010, 2013, 2016, 2019). Pomaknite se do Zavihek za razvijalce -> Visual Basic (Lahko uporabite tudi bližnjico Alt + F11). V urejevalniku VB kliknite Vstavi -> Modul in prilepite spodnjo kodo.
Upoštevajte spodnji postopek, ki prikazuje različne vrste deklaracij.
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 SubPritisnite F5 ali pritisnite gumb za zagon v orodni vrstici, da izvedete kodo.

Navadna spremenljivka Vs spremenljivka polja
Zdaj vemo, kako deluje enodimenzionalno polje. Vzemimo si torej trenutek, da razumemo, zakaj so nizi tako ključni v programskih jezikih.
Predpostavimo, da morate vnesti plačo 5 zaposlenih. Da bi to dosegli z običajno spremenljivko, morate ustvariti 5 spremenljivk.
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 SubZdaj pa zgradimo isto kodo z uporabo spremenljivke Array.
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 SubTu smo pravkar uporabili eno spremenljivko polja, ki bo shranila vsa imena zaposlenih. Recimo, da morate dodati še 100 imen zaposlenih, potem morate samo spremeniti velikost polja in vam ni treba ustvarjati nove spremenljivke.
To bo zmanjšalo število vrstic v kodi in s tem postalo lahko razumljivo in berljivo.
Dvodimenzionalno polje
Dvodimenzionalna matrika ima 2 indeksa - prvi indeks bo predstavljal vrstice, drugi indeks pa stolpec. Ima več vrstic in stolpcev in je običajno predstavljen v obliki tabele.
Izjava 2 dimne matrike je naslednja:
Dim ArrayName (FirstIndex To LastIndex, FirstIndex To LastIndex) Kot DataType.
Razmislite o primeru shranjevanja ocen 2 študentov, pridobljenih pri treh predmetih. Tako bomo ustvarili dvodimenzionalno matriko, ki bo zajemala 2 vrstici in 3 stolpce.
Matriko bomo začeli od vrstice 1 do vrstice 2 in stolpca 1 do stolpca 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 SubPritisnite F5 ali pritisnite gumb za zagon v orodni vrstici, da izvedete kodo.
Vrstica 2 in stolpec 2

Vrstica 1 in stolpec 3

Fiksni nizi
Fiksni nizi, imenovani tudi statični nizi, imajo fiksno spodnjo in zgornjo mejo in te velikosti ni mogoče spremeniti med izvajanjem. Velikost polja je določena med deklaracijo v oklepajih. Vsi zgornji primeri so fiksni nizi, saj smo med deklaracijo omenili njegovo velikost.
Fiksna polja se običajno uporabljajo, kadar ste prepričani o velikosti polja. Na primer, število dni v tednu lahko ustvarite matriko z spodnjo mejo 0 in zgornjo mejo 6 in se prepričajte, da njene velikosti ne boste nikoli spremenili.
Dinamični nizi
Dinamični nizi nam omogočajo, da med izvajanjem spremenimo velikost polja. Ti so uporabni, če niste prepričani o velikosti polja. Predpostavimo, da pri vpisu na fakulteto morda niste prepričani, koliko študentov bo dejansko dobilo sprejem, zato ne morete določiti velikosti v času načrtovanja ali prijave.
Izjava dinamičnega polja je podobna statičnemu polju s praznimi oklepaji.
Dim zaposleni () kot niz
REDIM
Ko želimo spremeniti velikost, ki jo moramo uporabiti REDIM , upoštevati moramo, da spodnje meje ni mogoče spremeniti, spremenimo lahko le zgornjo mejo polja.
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 
Zdaj vemo, da lahko med izvajanjem spremenimo velikost matrike, zato lahko uporabimo stavek ReDim, kadar koli želimo povečati ubound polja. Poskusimo še enkrat povečati velikost polja in dodati novo ime š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 
Opazili bi, da rezultat ni prikazal prej dodanih imen študentov, ampak daje ničelno vrednost. To pa zato, ker bo stavek Redim ustvaril novo matriko z novo velikostjo in uničil stare vrednosti.
ReDim Preserve
Izjava Represerve nam pomaga pri premagovanju omejitev ReDim z ohranjanjem starih vrednosti in s tem povečanjem velikosti polja.
Znova napišite zgornjo kodo s pomočjo 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 
Ker smo uporabili ključno besedo save, se predhodno vnesene vrednosti ne izgubijo in nova vrednost je uspešno dodana.
Variantno polje
Do zdaj smo videli matriko, ki je sprejemala iste vrste vrednosti. Zdaj pa razglasimo polje kot različico in shranimo različne vrste podatkov, kot so String, Date, Long, Integer, v eno matriko.
Primer:
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 SubMetode VBA matrike
V nizih VBA obstaja več metod, ki nam bodo pomagale izvajati različne funkcije, kot je navedeno spodaj.
| Sl. Ne | Ime | Sintaksa | Opis |
|---|---|---|---|
| 7. | Pridružite se | Pridružite se (sourcearray, (ločilo)) | Združi več podnizov v matriki in vrne vrednost niza. |
| 1. | Matrika | Niz (goljufiv) | Pretvori običajno različico spremenljivka v matriko. |
| dva | Izbriši | Izbriši ime polja | Uporablja se za ponovno ponazoritev matrike s fiksno velikostjo in sprosti pomnilnik za Dynamic array. |
| 3. | IsArray | IsArray (ime spremenljivke) | Določa, ali je spremenljivka matrika. |
| 4. | Lbound | LBound (ArrayName, (Dimension)) | Vrne najnižji indeks matrike. |
| 5. | Brez obvez | UBound (ArrayName, (Dimension)) | Vrne najvišji indeks matrike. |
| 6. | Split | Razdeli (izraz, (ločilo, (omejitev, (primerjaj)))) | Niz razdeli na več podnizov in vrne matriko, ki temelji na ničli. |
| 8. | Filter | Filter (izvorni niz, ujemanje, (vključi, (primerjaj))) | Filter nam bo omogočil iskanje po določeno ujemanje iz polja. |
O vsakem od njih se podrobno pogovorimo s primerom.
# 1) Matrika
Deklarirajmo navadno spremenljivko variante in jo uporabimo kot matriko. Ko želite spremeniti navadno spremenljivko variante v matriko, moramo uporabiti NIZ funkcija, kot je prikazano v spodnjem primeru.
Funkcije matrike sprejmejo argument, ki vsebuje vrednosti, ločene z vejico. Te vrednosti so dodeljene kot element matrike.
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 
Spremenljivko polja morate identificirati z indeksom, zato so v zgornjem primeru vrednosti pridobljene kot varData (0) varData (2) varData (3).
# 2) Izbriši
Ta funkcija bo izbrisala vse vrednosti, vnesene za matriko s fiksno velikostjo, in sprostila prostor v pomnilniku za dinamično matriko.
Sintaksa: Izbriši ime polja
Erase ima različno vedenje za različne vrste podatkov, kot je navedeno spodaj.
- Za fiksno številko: Vse vrednosti so ponastavljene na nič.
- Za vrsto podatkov s fiksnim nizom: Vse vrednosti so ponastavljene na nič.
- Za dinamično matriko: Sprosti pomnilnik, ki ga uporablja matrika.
Primer:
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 SubRezultat pred uporabo funkcije brisanja

Rezultat po uporabi Erase

# 3) IsArray
Ta funkcija se uporablja za določanje, ali je podana vhodna spremenljivka matrika ali ne. Vrne true, če je vnesena spremenljivka true, sicer pa false.
Sintaksa: IsArray (ime spremenljivke)
Primer:
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)) EndRezultat prvega Msgboxa

Rezultat drugega sporočila msgbox

# 4) Vezana
Vrne najnižji indeks polja, določenega kot argument za funkcijo Lbound.
Sintaksa: LBound (ArrayName, (Dimension))
ArrayName je ime matrike.
Dimenzija je neobvezna celoštevilska vrednost, če ima matrika več dimenzij, lahko določite, do katere dimenzije želite določiti Lbound.
Primer:
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) Brez obvez
Vrne zgornji indeks polja, določenega kot argument v funkciji Ubound.
Sintaksa: UBound (ArrayName, (Dimension))
ArrayName je ime matrike.
Dimenzija je neobvezna celoštevilska vrednost, če ima polje več dimenzij, lahko določite, za katero dimenzijo želite določiti Ubound.
Primer:
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) Split
Vrne matriko s številom podnizov, ki izhajajo iz danega celotnega niza.
Sintaksa: delitev (izraz, (ločilo, (omejitev, (primerjaj))))
- Izraz: To je celoten niz, ki bo uporabljen za ustvarjanje podnizov.
- Ločilo: Z uporabo določenega ločila bodo ustvarjeni podnizi. Če to ni omenjeno, se prostor šteje za ločilo.
- Omejitev: Število podnizov, ki jih je treba vrniti.
- Primerjaj: Po izdelavi podniz lahko za preizkus rezultata uporabite različne možnosti primerjave.
Primer: V spodnjem primeru uporabljamo ločilo kot - in omejitev kot 3.
Funkcija split bo torej ločila celoten niz v podniz na podlagi ločila. Omejitev pa smo omenili tudi kot 3, zato podnizi ne bodo oblikovani po omejitvi 3. Tako bo zadnji ločilnik 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) Pridružite se
To je le obratno od deljenja, Join bo ustvaril en niz s kombiniranjem več podnizov.
Sintaksa: Pridružite se (sourcearray, (ločilo))
Izvorna matrika: Enodimenzionalno polje nizov, ki jih želite združiti v enega.
Ločilo: Določeni ločilo bo dodan za vsakim nizom med združevanjem.
Primer:
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 SubVse 3 vrednosti so združene in se postavi med vsako besedo, kot smo omenili kot ločilo.

# 8) Filter
Filter nam bo omogočil iskanje določenega ujemanja iz polja. Na podlagi meril filtra bo vrnjena podmnožica niza nizov.
Sintaksa: Filter (izvorni niz, ujemanje, (vključi, (primerjaj)))
Primer:
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 SubTa primer bo z uporabo funkcije filtra iskal besedo 'pomoč' v vseh nizih matrike.

Pogosto zastavljena vprašanja
V # 1) Kako dobiti dolžino polja v VBA?
Odgovor: Da dobimo dolžino polja, uporabimo funkcijo Ubound. Ta funkcija nam bo dala zgornji podpisnik določene matrike.
V # 2) Kako prijaviti matriko v VBA?
Odgovor: Enodimenzionalno polje je razglašeno, kot je prikazano spodaj.
Zatemni ime polja (od spodnjega do zgornjega) kot tip podatkov
Primer: Zatemni Myarray (0 do 2) kot celo število
Dvodimenzionalno polje je razglašeno, kot je prikazano spodaj.
Dim ArrayName (FirstIndex To LastIndex, FirstIndex To LastIndex) Kot DataType.
Primer: Zatemnjene oznake (1 do 3, 0 do 2) kot celo število
V # 3) Kako pretvoriti obseg v matriko?
Odgovor: S funkcijo Transpose lahko pretvorimo obseg v matriko. Ta koda bo ustvarila My (10)
Sub Example() Dim Mys As Variant Mys = Application.Transpose(Range('A1:A10')) End Sub 
V # 4) Kaj je različica matrike v VBA?
katera je najboljša vohunska aplikacija za android
Odgovor: Varianta matrika bo za svoj indeks sprejela vse vrste podatkovnih tipov, tj.v eno matriko lahko shranite različne vrste vrednosti.
Primer:
Dim arrayData (3) Kot varianta
arrayData (0) = 'Vikas Vipal'
arrayData (1) = 411234567890 #
V # 5) Kaj je osnovni stavek o možnostih?
Odgovor: To se uporablja za razglasitev spodnjega podpisnika polja in se uporablja na začetku modula. Privzeto je spodnji indeks 0, če deklarirate možnost Base 1 na ravni modula, potem bo za vsa polja privzeti spodnji indeks 1.
Zaključek
V tej vadnici smo izvedeli, kako se nizi uporabljajo v VBA, in videli smo, kako se nizi razlikujejo od običajne spremenljivke. S primeri smo raziskali enodimenzionalne in dvodimenzionalne nize. Razpravljali smo tudi o fiksnih in dinamičnih nizih.
S primeri smo razpravljali o načinih spreminjanja velikosti polja med izvajanjem in ohranjanja vrednosti z uporabo redimserve. Na koncu smo se naučili še metod Array, ki nam bodo pomagale pri izvajanju več operacij.
=> Tukaj preverite VSE Vadnice VBA
Priporočeno branje
- Vadnica za Excel VBA - Uvod v VBA v Excelu
- Tipi podatkov VBA - številski in neštevilski tipi podatkov v VBA
- Spremenljivke in možnosti VBA, ki so eksplicitne v VBA
- Obrni matriko v Javi - 3 metode s primeri
- Vadnica za dolžino polja Java s primeri kode
- Nazobčan niz v Javi - Vadnica s primeri
- Vrste podatkov matrike - int matrika, dvojno polje, niz nizov itd.
- String Array C ++: Implementacija in predstavitev s primeri


