Kaip "Excel VBA" programoje "ReDim" išsaugoti 2D masyvą (2 paprasti būdai)

  • Pasidalinti
Hugh West

Masyvas - tai kintamasis, kuriame saugomi tos pačios rūšies duomenys. Jei yra tik viena eilutė arba vienas stulpelis duomenų, jis vadinamas vienmačiu masyvu. Tačiau kai yra daugiau nei viena eilutė ir daugiau nei vienas stulpelis, jis vadinamas 2D masyvu. Naudojame ReDim keisti masyvo dydį VBA. Be to, mes naudojame Išsaugoti raktinį žodį su ReDim kad senieji duomenys liktų nepaliesti. Šiame straipsnyje 2 greiti būdai, kaip " ReDim Preserve " a 2D masyvas svetainėje "Excel" VBA .

Atsisiųsti praktikos sąsiuvinį

"ReDim Preserve 2D.xlsm" makrokomanda

2 patogūs būdai, kaip "Excel VBA" programoje "ReDim" išsaugoti 2D masyvą

Tai bazinis duomenų rinkinys, sukurtas iš 2D masyvas su trimis eilutėmis ir dviem stulpeliais. Pirmiausia sukursime šį masyvą. Tada į šį masyvą pridėsime dar vieną stulpelį. Naudosime " ReDim Preserve " tai padaryti. Be to, parodysime, kas nutiks, jei to nenaudosime.

Pagal numatytuosius nustatymus galime keisti tik paskutinį masyvo matmenį (t. y. stulpelius arba viršutinę ribą). Mes transponuosime masyvą, tada pakeisime paskutinį matmenį ir vėl transponuosime, kad pakeistume abu masyvo matmenis. 2D masyvas "Excel VBA" programoje.

1. ReDim Išsaugoti paskutinį matmenį 2D masyvas

Pirmiausia apibrėšime 2D masyvas kaip dinamišką. Tada, naudodami ReDim sukursime masyvą su trimis eilutėmis ir dviem stulpeliais. Galiausiai panaudosime ReDim dar kartą su teiginiu Išsaugoti raktažodis padidinti dviejų matmenų masyvo viršutinę ribą.

Žingsniai:

  • Norėdami pradėti, paspauskite ALT+F11 įkelti VBA modulis langą. Taip pat galite tai padaryti iš Kūrėjas skirtukas → pasirinkite "Visual Basic .
  • Tada iš Įdėkite skirtukas → pasirinkite Modulis . Čia įvesime VBA kodą.

  • Tada įveskite šį kodą į Modulis langas.
 Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 Range("C6:D8").Value = Our_Array End Sub 

VBA kodo suskirstymas

  • Pirma, kviečiame Papildoma procedūra " Redim_Preserve_2D_Array_Row ".
  • Tada deklaruojame kintamąjį Mūsų_masyvas kaip dinaminį masyvą.
  • Toliau apibrėžiame masyvo dydį. Apatinė riba yra 3 , viršutinė riba yra 2 ir abu prasideda nuo 1 .
  • Tuomet priskiriame reikšmes masyve.
  • Po to įvedame reikšmes į C6:D8 ląstelių diapazonas.
  • Po to įvykdysime kodą.
  • Taigi, Išsaugoti . Modulis ir paspauskite Paleisti .

  • Dėl to jis grąžins reikšmes į apibrėžtus ląstelių intervalus. Matome, kad " Rachel " yra eilutėje 1 ir stulpelis 1 padėtį, kuri buvo apibrėžta kaip ( 1,1 ) VBA kode.

  • Dabar pakeisime masyvo dydį.
  • Taigi prie ankstesnio kodo pridėkite šį ir pašalinkite pirmąją Range.Value teiginys . be to, kaip atrodo kodas, galite pamatyti toliau pateiktoje nuotraukoje.
 ReDim Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Teksasas" Our_Array(2, 3) = "Misisipė" Our_Array(3, 3) = "Juta" Range("C6:E8").Value = Our_Array 

  • Čia viršutinę ribą padidinome nuo ( 1 Į 2 ) į ( 1 Į 3 ) pagal 1 .
  • Tada į masyvą įtraukėme reikšmes.
  • Jei dabar įvykdysime šį kodą, pamatysime, kad ankstesnės reikšmės nėra išsaugomos. Bus grąžinama tuščia ankstesnių reikšmių reikšmė.

  • Dabar tai galime ištaisyti pridėdami Išsaugoti raktažodį į ReDim teiginys .
  • Galiausiai visas mūsų kodas bus toks.
 Option Explicit Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value =Our_Array End Sub 

  • Dabar, jei mes Paleisti šį kodą, tuomet išvestis bus tokia. Taigi, mes " ReDim Preserve " paskutinis matmuo 2D masyvas "Excel VBA".. Dabar kitas metodas parodys, kaip " ReDim Preserve " ir pakeiskite abiejų matricos matmenų dydį.

Skaityti daugiau: VBA unikalioms vertėms iš stulpelio į "Excel" masyvą gauti (3 kriterijai)

Panašūs skaitiniai

  • Kaip pavadinti lentelės masyvą "Excel" programoje (paprastais žingsniais)
  • "Excel VBA" CSV failo skaitymas į masyvą (4 idealūs pavyzdžiai)
  • Kaip konvertuoti diapazoną į masyvą "Excel VBA" (3 būdai)
  • "Excel VBA": dublikatų šalinimas iš masyvo (2 pavyzdžiai)

2. "ReDim" Išsaugoti abu matmenis 2D masyve "Excel VBA

Šiuo paskutiniuoju metodu parodysime, kaip pakeisti dydį ir " ReDim Preserve " 2D masyvas . Čia naudosime VBA transponuoti funkciją, kad pakeistume masyvo apatinės ribos dydį. Jei bandytume pakeisti masyvo apatinės ribos dydį pirmuoju metodu, pamatytume " Priedas iš intervalo " klaida. Dabar, nieko nelaukdami, pažiūrėkime, kaip galime tai ištaisyti ir pasiekti savo tikslą.

Žingsniai:

  • Pirma, kaip parodyta pirmajame metode , iškvieskite Modulis langas.
  • Antra, į pirmąjį kodą įtraukite šias kodo eilutes.
 Our_Array = Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array 
  • Be to, galutinio metodo kodas atrodo taip.
 Option Explicit Sub ReDim_Preserve_2D_Array_Both_Dimensions() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Our_Array =Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monika" Our_Array(4, 1) = "Monika" Our_Array(4, 2) = 26 Our_Array(4, 3) = "Naujoji Meksika" Range("C6:E9").Value = Our_Array End Sub 

VBA kodo suskirstymas

  • Pirma, kviečiame Papildoma procedūra " ReDim_Preserve_2D_Array_Both_Dimensions ".
  • Tada likusieji kodai iki VBA transponuoti funkcija yra tokia pati kaip ir pirmajame kode.
  • Šiuo atveju perkeliame masyvą.
  • Tada padidiname viršutinę masyvo ribą.
  • Po to vėl transponuosime masyvą. Todėl galiausiai jis pakeis apatinę ribą.
  • Toliau įvedame pakeisto dydžio masyvo reikšmes, išsaugodami senuosius duomenis.
  • Galiausiai įrašome reikšmes į ląstelių intervalą C6:E9 .
  • Po to, kaip parodyta pirmajame metode , Paleisti šį kodą.
  • Taigi, galime matyti, kaip kodas išsaugo 2D masyvas naudodami " ReDim Preserve " ir VBA transponuoti funkcija.

Skaityti daugiau: VBA transponuoti masyvą "Excel" programoje (3 metodai)

Dalykai, kuriuos reikia prisiminti

  • ReDim Preserve negali pakeisti apatinės masyvo ribos. Norėdami tai padaryti, turime naudoti Transponuoti funkcija.
  • Galime naudoti tik ReDim dinaminiuose masyvuose.

Išvada

Parodėme du greitus būdus, kaip " ReDim Preserve " a 2D masyvas Excel VBA. Jei susiduriate su problemomis, susijusiomis su šiais metodais, arba turite man kokių nors atsiliepimų, nedvejodami komentuokite toliau. Be to, galite apsilankyti mūsų svetainėje ExcelWIKI daugiau su "Excel" susijusių straipsnių. Ačiū, kad skaitote, ir toliau tobulėkite!

Hugh Westas yra labai patyręs Excel treneris ir analitikas, turintis daugiau nei 10 metų patirtį šioje srityje. Jis yra įgijęs apskaitos ir finansų bakalauro bei verslo administravimo magistro laipsnius. Hugh turi aistrą mokymui ir sukūrė unikalų mokymo metodą, kurį lengva sekti ir suprasti. Jo ekspertinės žinios apie „Excel“ padėjo tūkstančiams studentų ir specialistų visame pasaulyje tobulinti savo įgūdžius ir tobulėti savo karjeroje. Savo tinklaraštyje Hugh dalijasi savo žiniomis su pasauliu, siūlydamas nemokamus „Excel“ vadovėlius ir internetinius mokymus, kad padėtų asmenims ir įmonėms išnaudoti visą savo potencialą.