excel vba array array methods with examples
Ovaj će vodič objasniti VBA niz, razne tipove nizova, varijantni niz i metode niza uz pomoć primjera programiranja:
Uobičajena VBA varijabla je držač mjesta koji pohranjuje vrijednost pojedinih podataka. Ima odnos 1 do 1, tj. 1 varijabla za 1 vrijednost.
Sada zamislite pohranu više vrijednosti koje su iste vrste. Umjesto stvaranja više varijabli, možete samo stvoriti jednu varijablu i pohraniti sve iste vrste vrijednosti. Ova se varijabla naziva ARRAY.
=> Posjetite ovdje da biste vidjeli VBA seriju treninga za sve
kako stvoriti Java aplikaciju u eclipse - u
U ovom vodiču upoznat ćete što je VBA niz, jednodimenzionalni i dvodimenzionalni nizovi, zajedno s različitim vrstama nizova poput Fixed i Dynamic. Također ćemo razumjeti razne metode niza koje se koriste u VBA.
Što ćete naučiti:
VBA niz
Nizovi su posebna vrsta varijable koja može pohraniti više vrijednosti istog tipa podataka.
Na primjer, ako imate imena 100 zaposlenika, umjesto stvaranja 100 varijabli niza tipa podataka, možete samo stvoriti jednu varijablu niza tipa string i dodijeliti 100 vrijednosti istoj varijabli niza.
Jednodimenzionalni niz
Niz koji ima sve elemente u jednom retku ili u jednom stupcu naziva se jednodimenzionalni niz. Popis imena svih učenika u razredu u jednom stupcu primjer je jednodimenzionalnog niza. Izjavljuje se kao što je prikazano u nastavku.
Zatamnjeno ime niza (od donjeg do gornjeg) kao tip podataka
Postoji više načina za deklariranje niza. Slijedi nekoliko primjera.
Primjer:
# 1) Zatamni MyArrayExample (0 do 3) kao cjelobrojno
Stvara niz s mjestom 0,1,2,3 koji će prihvatiti Integer vrijednosti.
# 2) Zatamni MyArray2 (3) kao niz
Zadane vrijednosti od 0 do 3 i stvara niz s mjestom 0,1,2,3 koji će prihvatiti vrijednosti niza.
# 3) Zatamni MyArray2 (13 do 15) kao dvostruko
Stvara niz počevši od 13 tj. 13, 14 i 15 i prihvaća Double vrijednosti. Donju granicu spomenuli smo kao 13, pa će niz početi dodjeljivati vrijednosti s mjesta 13, a ne s 0.
Stvorimo jednostavan kôd i shvatimo sva 3 načina deklariranja niza.
Bilješka: Za pisanje VB koda Otvorite Microsoft Excel (podržane verzije su Excel 2007, 2010, 2013, 2016, 2019). Dođite do Kartica programera -> Visual Basic (Alternativno koristite prečac Alt + F11). U VB editoru kliknite na Umetni -> Modul i zalijepite donji kod.
Razmotrite postupak u nastavku koji prikazuje različite vrste deklaracija.
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
Pritisnite F5 ili pritisnite gumb za pokretanje na alatnoj traci da biste izvršili kôd.
Regularna varijabla Vs varijabla niza
Sada znamo kako funkcionira jednodimenzionalni niz. Stoga, uzmimo trenutak da shvatimo zašto su nizovi tako presudni u programskim jezicima.
Pretpostavimo da trebate unijeti plaću 5 zaposlenih. Da biste to postigli pomoću uobičajene varijable, morate stvoriti 5 varijabli.
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
Izgradimo sada isti kod pomoću varijable 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 Sub
Ovdje smo upravo koristili jednu varijablu niza koja će pohraniti sva imena zaposlenika. Pretpostavimo da trebate dodati još 100 imena zaposlenika, a zatim samo trebate promijeniti veličinu polja i ne morate stvarati novu varijablu.
To će smanjiti broj redaka u kodu i time ga učiniti lako razumljivim i čitljivim.
Dvodimenzionalni niz
Dvodimenzionalni niz ima 2 indeksa - prvi indeks predstavljat će retke, a drugi indeks stupac. Ima više redaka i stupaca i obično je predstavljen u obliku tablice.
Izjava dvosmjernog niza je kako slijedi:
Zatamni ime niza (FirstIndex u LastIndex, FirstIndex u LastIndex) kao tip podataka.
Razmotrimo primjer pohrane ocjena 2 učenika dobivenih iz 3 predmeta. Tako ćemo stvoriti dvodimenzionalni niz koji zauzima 2 retka i 3 stupca.
Niz ćemo započeti od retka 1 do retka 2 i stupca 1 do stupca 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
Pritisnite F5 ili pritisnite gumb za pokretanje na alatnoj traci da biste izvršili kôd.
Red 2 i Stupac 2
Red 1 i Stupac 3
Fiksni nizovi
Fiksni nizovi koji se nazivaju i statički nizovi imaju fiksnu donju i gornju granicu i ta se veličina ne može mijenjati u vrijeme izvođenja. Veličina polja navedena je tijekom deklaracije u zagradama. Svi gore navedeni primjeri su Fiksni nizovi jer smo spomenuli njegovu veličinu tijekom deklaracije.
Fiksni nizovi obično se koriste kada ste sigurni u veličinu niza. Na primjer, broj dana u tjednu, možete stvoriti niz s donjom granicom 0 i gornjom granicom 6 i biti sigurni da nikada nećete promijeniti njegovu veličinu.
Dinamički nizovi
Dinamički nizovi omogućuju nam promjenu veličine niza tijekom vremena izvođenja. Oni su korisni kada niste sigurni u veličinu niza. Pretpostavimo da prilikom upisa na fakultet možda nećete biti sigurni koliko će učenika stvarno dobiti upis, pa ne možete odrediti veličinu u vrijeme dizajna ili deklaracije.
Deklaracija dinamičkog polja slična je statičkom nizu s praznim zagradama.
Prigušeni zaposlenik () kao niz
REDIM
Kada želimo promijeniti veličinu koju trebamo koristiti REDIM , moramo napomenuti da se donja granica ne može mijenjati, možemo promijeniti samo gornju granicu niza.
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
Sada znamo da možemo mijenjati veličinu niza tijekom izvođenja, stoga možemo koristiti naredbu ReDim kad god trebamo povećati ubound polja. Pokušajmo još jednom povećati veličinu polja i dodati novo ime učenika.
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
Primijetili biste da rezultat nije prikazivao imena učenika dodanih prije, on daje nulu vrijednost. To je zato što će naredba Redim stvoriti novi niz s novom veličinom i uništiti stare vrijednosti.
Rezervat ReDim
Izjava Represerve pomaže nam u prevladavanju ograničenja ReDima očuvanjem starih vrijednosti i time povećanjem veličine niza.
Prepišimo gornji kod pomoću 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
Kako smo koristili ključnu riječ save, prethodno unesene vrijednosti se ne gube i nova vrijednost se uspješno dodaje.
Varijantni niz
Do sada smo vidjeli niz koji prihvaća istu vrstu vrijednosti. Sada proglasimo niz varijantom i pohranimo razne vrste podataka poput String, Date, Long, Integer u jedan niz.
Primjer:
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
VBA metode niza
U VBA nizovima postoji nekoliko metoda koje će nam pomoći u izvršavanju različitih funkcija, kao što je spomenuto u nastavku.
Sl. Ne | Ime | Sintaksa | Opis |
---|---|---|---|
7 | Pridružiti | Pridružite se (izvorni niz, (graničnik)) | Spaja više podnizova u polju i vraća vrijednost niza. |
jedan | Niz | Niz (prijevaran) | Pretvara redovnu varijantu varijabla u niz. |
dva | Izbriši | Izbriši ime polja | Koristi se za reincijaliziranje niza fiksne veličine i oslobađa memoriju za Dynamic array. |
3 | IsArray | IsArray (ime varijable) | Određuje je li varijabla niz. |
4 | Lbound | LBound (ArrayName, (Dimenzija)) | Vraća najniži indeks niza. |
5 | Ubound | UBound (ArrayName, (Dimension)) | Vraća najveći indeks niza. |
6 | Podjela | Podijeli (izraz, (graničnik, (ograničenje, (usporedba)))) | Dijeli niz u više podnizova i vraća niz zasnovan na nuli. |
8 | filtar | Filtriraj (izvorni niz, podudaranje, (uključi, (usporedi))) | Filter će nam omogućiti pretragu a određeno podudaranje iz niza. |
Razgovarajmo detaljno o svakom od njih na primjeru.
# 1) Niz
Proglasimo regularnu varijablu varijable i upotrijebimo je kao niz. Kada želite promijeniti uobičajenu varijablu varijante u niz, trebamo koristiti NIZ funkcija kao što je prikazano u donjem primjeru.
Funkcije niza prihvaćaju argument koji sadrži vrijednosti odvojene zarezom. Te su vrijednosti dodijeljene kao element niza.
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
Morate identificirati varijablu niza pomoću indeksa, stoga se u gornjem primjeru vrijednosti dohvaćaju kao varData (0) varData (2) varData (3).
# 2) Izbriši
Ova će funkcija izbrisati sve vrijednosti unesene za niz fiksne veličine i oslobodit će memorijski prostor za dinamički niz.
Sintaksa: Izbriši naziv polja
Erase se različito ponaša za različite vrste podataka kako je dano u nastavku.
- Za fiksni broj: Sve su vrijednosti vraćene na nulu.
- Za vrstu podataka s fiksnim nizom: Sve su vrijednosti vraćene na nultu duljinu.
- Za dinamički niz: Oslobađa memoriju koju koristi niz.
Primjer:
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
Rezultat prije upotrebe funkcije brisanja
Rezultat nakon upotrebe brisanja
# 3) IsArray
Ova se funkcija koristi za određivanje je li zadana ulazna varijabla niz ili nije. Vraća true ako je unijeta varijabla true, inače vraća false.
Sintaksa: IsArray (ime varijable)
Primjer:
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
Rezultat iz prvog Msgboxa
Rezultat iz drugog msgboxa
# 4) Vezani
Vraća najniži indeks niza naveden kao argument funkcije Lbound.
Sintaksa: LBound (ArrayName, (Dimension))
ArrayName je ime niza.
Dimenzija je neobavezna cijela vrijednost, ako niz ima više dimenzija, tada možete odrediti kojoj dimenziji želite odrediti Lbound.
kako napraviti niz objekata
Primjer:
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
Vraća gornji indeks niza navedenog kao argument u funkciji Ubound.
Sintaksa: UBound (ArrayName, (Dimension))
ArrayName je ime niza.
Dimenzija je neobavezna cijela vrijednost, ako niz ima više dimenzija, tada možete odrediti koju dimenziju želite odrediti Ubound.
Primjer:
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
Vraća niz s nizom podnizova izvedenih iz zadanog cijelog niza.
Sintaksa: Split (izraz, (graničnik, (ograničenje, (usporedba))))
- Izraz: Ovo je cijeli niz koji će se koristiti za stvaranje podnizova.
- Razdjelnik: Pomoću navedenog graničnika generirat će se podnizovi. Ako se to ne spominje, prostor se smatra graničnikom.
- Ograničiti: Broj podnizova koje treba vratiti.
- Usporedite: Nakon izrade podniza, možete koristiti različite mogućnosti usporedbe za testiranje rezultata.
Primjer: U donjem primjeru koristimo graničnik kao - i ograničenje kao 3.
Stoga će funkcija razdvajanja razdvojiti cijeli niz u podniz na temelju graničnika. No, također smo spomenuli ograničenje kao 3, tako da se podnizovi neće formirati nakon ograničenja 3. Tako će se preskočiti posljednji graničnik.
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
Ovo je samo naličje podjele, Join će stvoriti jedan niz kombinirajući nekoliko podnizova.
Sintaksa: Pridružite se (izvorni niz, (graničnik))
Izvorni niz: Jednodimenzionalni niz žica koje želite spojiti u jednu.
Razdjelnik: Navedeni graničnik dodavat će se nakon svakog niza tijekom spajanja.
Primjer:
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
Sve su 3 vrijednosti spojene i se stavlja između svake riječi, kao što smo spomenuli kao graničnik.
# 8) Filtar
Filtar će nam omogućiti da pretražimo određeno podudaranje iz niza. Na temelju kriterija filtra, vratit će se podskup niza nizova.
Sintaksa: Filtriraj (izvorni niz, podudaranje, (uključi, (usporedi)))
Primjer:
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
Ovaj će primjer tražiti riječ 'pomoć' u svim nizovima polja pomoću funkcije filtra.
Često postavljana pitanja
P # 1) Kako dobiti duljinu niza u VBA?
Odgovor: Da bismo dobili duljinu niza, koristimo funkciju Ubound. Ova će nam funkcija dati gornji indeks navedenog niza.
P # 2) Kako prijaviti niz u VBA?
Odgovor: Jednodimenzionalni niz deklariran je kao što je prikazano u nastavku.
Zatamnjeno ime niza (od donjeg do gornjeg) kao tip podataka
Primjer: Zatamni Myarray (0 do 2) kao cjelovito
Dvodimenzionalni niz deklariran je kao što je prikazano u nastavku.
Zatamni ime niza (FirstIndex u LastIndex, FirstIndex u LastIndex) kao tip podataka.
Primjer: Zatamnjene oznake (1 do 3, 0 do 2) kao cjelovite
P # 3) Kako pretvoriti raspon u niz?
Odgovor: Funkciju Transpose možemo koristiti za pretvaranje raspona u niz. Ovaj će kôd stvoriti My (10)
Sub Example() Dim Mys As Variant Mys = Application.Transpose(Range('A1:A10')) End Sub
P # 4) Što je varijanta niza u VBA-u?
Odgovor: Varijantni niz prihvatit će sve vrste tipova podataka za svoj indeks, tj. Možete pohraniti različite vrste vrijednosti u jedan niz.
Primjer:
Dim arrayData (3) Kao varijanta
arrayData (0) = 'Vikas Vipal'
arrayData (1) = 411234567890 #
P # 5) Što je osnovni iskaz opcije?
Odgovor: To se koristi za deklaraciju donjeg indeksa niza i koristi se na početku modula. Prema zadanim postavkama, donji indeks je 0 ako deklarirate Option Base 1 na razini modula, tada će za sve nizove zadani donji indeks biti 1.
Zaključak
U ovom uputstvu naučili smo kako se nizovi koriste u VBA-u i vidjeli smo kako se nizovi razlikuju od uobičajene varijable. Primjerom smo istraživali jednodimenzionalne i dvodimenzionalne nizove. Također smo razgovarali o fiksnim i dinamičkim nizovima.
Primjeri su raspravljali o načinima za promjenu veličine niza tijekom izvođenja i očuvanju vrijednosti pomoću redimservera. Napokon smo naučili metode niza koje će nam pomoći u izvođenju nekoliko operacija.
=> Ovdje provjerite SVE VBA vodiče
Preporučena literatura
- Vodič za Excel VBA - Uvod u VBA u programu Excel
- VBA tipovi podataka - numerički i ne-numerički tipovi podataka u VBA
- VBA varijable i opcije eksplicitne u VBA
- Obrnuti niz u Javi - 3 metode s primjerima
- Vodič za dužinu Java polja s primjerima koda
- Nazubljeni niz u Javi - Vodič s primjerima
- Tipovi podataka niza - int niz, dvostruki niz, niz žica itd.
- Niz niza C ++: Implementacija i predstavljanje s primjerima