Kuidas ReDim säilitada 2D-massiivi Excel VBA-s (2 lihtsat viisi)

  • Jaga Seda
Hugh West

Massiiv on muutuja, mis hoiab samaliigilisi andmeid. Kui andmeid on ainult üks rida või üks veerg, siis nimetatakse seda ühemõõtmeliseks massiiviks. Kui aga on rohkem kui üks rida ja veerg, siis nimetatakse seda 2D-massiiviks. Kasutame ReDim massiivi suuruse muutmiseks VBAs. Lisaks kasutame me massiivi Säilitada võtmesõna koos ReDim vanade andmete säilitamiseks. See artikkel näitab teile, et 2 kiireid viise " ReDim Preserve " a 2D massiivi aadressil Excel VBA .

Lae alla praktiline töövihik

Makro ReDim Preserve 2D.xlsm säilitamiseks

2 praktilist lähenemist ReDim Preserve 2D massiivi säilitamiseks Excel VBAs

See on baasandmekogum, mis on loodud 2D massiivi kolme rea ja kahe veeruga. Kõigepealt loome selle massiivi. Seejärel lisame sellesse massiivi veel ühe veeru. Kasutame " ReDim Preserve ". Lisaks näitame, mis juhtub, kui me seda ei kasuta.

Vaikimisi saame muuta ainult massiivi viimase dimensiooni suurust (st veerud või ülemine piir). Me transponeerime massiivi, seejärel muudame viimase dimensiooni ja seejärel transponeerime uuesti, et muuta mõlema dimensiooni suurust. 2D massiivi Excel VBAs.

1. ReDim Preserve viimase dimensiooni säilitamine 2D massiivi puhul

Kõigepealt määratleme 2D massiivi kui dünaamiline. Seejärel, kasutades ReDim avaldusega loome kolme rea ja kahe veeruga massiivi. Lõpuks kasutame avaldust ReDim avaldus uuesti koos Säilitada märksõna kahemõõtmelise massiivi ülemise piiri suurendamiseks.

Sammud:

  • Alustuseks vajutage ALT+F11 et tuua üles VBA moodul Alternatiivselt võite seda teha ka aknast Arendaja vahekaart → valige Visual Basic .
  • Siis, alates Sisesta vahekaart → valige Moodul Me kirjutame VBA koodi siia.

  • Seejärel sisestage järgmine kood lahtrisse Moodul aken.
 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(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 koodi lahtikirjutamine

  • Esiteks, me kutsume Alammenetlus " Redim_Preserve_2D_Array_Row (Redim_Preserve_2D_Array_Row) ".
  • Seejärel deklareerime muutuja Meie_Array dünaamilise massiivi kujul.
  • Järgmisena määratleme massiivi suuruse. Alumine piir on 3 , on ülemine piir 2 ja mõlemad algavad 1 .
  • Seejärel määrame massiivi väärtused.
  • Pärast seda sisestame väärtused C6:D8 rakkude vahemik.
  • Pärast seda käivitame koodi.
  • Niisiis, Salvesta . Moodul ja vajutage Käivita .

  • Selle tulemusena tagastab see väärtused määratletud lahtritele. Näeme, et " Rachel " on reas 1 ja veerg 1 positsioon, mis on määratletud kui ( 1,1 ) VBA koodis.

  • Nüüd muudame massiivi suurust.
  • Niisiis, lisage see eelmisele koodile ja eemaldage esimene Range.Value avaldus . pealegi, kuidas kood näeb välja, nagu näete allolevalt hetkekujult.
 ReDim Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value = Our_Array 

  • Siinkohal oleme suurendanud ülemist piiri ( 1 aadressile 2 ) kuni ( 1 aadressile 3 ) poolt 1 .
  • Seejärel lisasime väärtused massiivi.
  • Kui me nüüd seda koodi käivitame, siis näeme, et eelmised väärtused ei ole säilinud. See tagastab eelmiste väärtuste jaoks tühja väärtuse.

  • Nüüd saame seda parandada, lisades Säilitada märksõna sisse ReDim avaldus .
  • Lõpuks on meie täielik kood järgmine.
 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(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" Range("C6:E8").Value =Our_Array End Sub 

  • Kui me nüüd Käivita seda koodi, siis on väljund selline. Seega, me " ReDim Preserve " viimane mõõde 2D massiivi Excel VBA... Nüüd, järgmine meetod näitab teile, kuidas " ReDim Preserve " ja muuta massiivi mõlema mõõtme suurust.

Loe edasi: VBA, et saada unikaalsed väärtused veerust Exceli massiivi (3 kriteeriumi)

Sarnased lugemised

  • Kuidas nimetada Exceli tabeli massiivi (lihtsate sammudega)
  • Excel VBA CSV-faili lugemiseks massiivi (4 ideaalset näidet)
  • Kuidas konverteerida vahemik Exceli VBA-s massiivi (3 võimalust)
  • Excel VBA: dubleeringute eemaldamine massiivist (2 näidet)

2. ReDim Preserve Both Dimensions 2D Array Excel VBA-s 2. ReDim Preserve Both Dimensions 2D Array Excel VBA-s

Selles viimases meetodis näitame teile samme, kuidas muuta suurust ja " ReDim Preserve " 2D massiivi Siinkohal kasutame me VBA transponeerimine funktsiooni, et muuta massiivi alumise piiri suurust. Kui me üritaksime muuta massiivi alumise piiri suurust esimeses meetodis, siis näeksime, et " Alaindeks väljaspool vahemikku " viga. Nüüd, ilma pikema jututa, vaatame, kuidas me saame seda parandada ja oma eesmärki saavutada.

Sammud:

  • Esiteks, nagu on näidatud esimeses meetodis , tuua üles Moodul aken.
  • Teiseks lisage esimesele koodile järgmised koodiread.
 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, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array 
  • Lisaks näeb lõpliku meetodi kood välja selline.
 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(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) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array End Sub 

VBA koodi lahtikirjutamine

  • Esiteks, me kutsume Alammenetlus " ReDim_Preserve_2D_Array_Both_Dimensions (ReDim_Preserve_2D_Array_Both_Dimensions) ".
  • Siis ülejäänud koodid kuni VBA transponeerimine funktsioon on sama, mis esimeses koodis.
  • Siin transponeerime massiivi.
  • Siis suurendame massiivi ülemist piiri.
  • Pärast seda transponeerime massiivi uuesti. Seetõttu muudab see lõpuks alumist piiri.
  • Seejärel sisestame muudetud suurusega massiivi väärtused, säilitades samal ajal vanad andmed.
  • Lõpuks kirjutame väärtused lahtrisse vahemikku C6:E9 .
  • Pärast seda, nagu on näidatud esimeses meetodis , Käivita see kood.
  • Seega saame visualiseerida, kuidas kood säilitab 2D massiivi kasutades " ReDim Preserve " ja VBA transponeerimine funktsioon.

Loe edasi: VBA Exceli massiivi transponeerimiseks (3 meetodit)

Asjad, mida meeles pidada

  • ReDim Preserve ei saa muuta massiivi alumist piiri. Selleks peame kasutama funktsiooni Transpose funktsioon.
  • Me saame kasutada ainult ReDim dünaamilistel massiividel.

Kokkuvõte

Oleme näidanud teile kaks kiiret võimalust, kuidas " ReDim Preserve " a 2D massiivi Excel VBA-s. Kui teil tekib nende meetoditega seoses probleeme või kui teil on mulle tagasisidet, siis kommenteerige allpool. Lisaks võite külastada meie veebilehte ExcelWIKI rohkem Exceliga seotud artikleid. Täname lugemise eest, jätkake edukat tööd!

Hugh West on suurte kogemustega Exceli koolitaja ja analüütik, kellel on selles valdkonnas üle 10-aastane kogemus. Tal on raamatupidamise ja rahanduse bakalaureusekraad ning ärijuhtimise magistrikraad. Hugh’l on kirg õpetamise vastu ning ta on välja töötanud ainulaadse õpetamisviisi, mida on lihtne järgida ja mõista. Tema Exceli ekspertteadmised on aidanud tuhandetel õpilastel ja spetsialistidel üle maailma oma oskusi parandada ja karjääris silma paista. Oma ajaveebi kaudu jagab Hugh oma teadmisi maailmaga, pakkudes tasuta Exceli õpetusi ja veebikoolitusi, mis aitavad üksikisikutel ja ettevõtetel oma potentsiaali täielikult ära kasutada.