Miten ReDim säilyttää 2D-määrän Excel VBA: ssa (2 helppoa tapaa)

  • Jaa Tämä
Hugh West

Joukko on muuttuja, joka säilyttää samantyyppisiä tietoja. Jos tietoja on vain yksi rivi tai yksi sarake, sitä kutsutaan yksiulotteiseksi joukoksi. Kun rivejä ja sarakkeita on kuitenkin enemmän kuin yksi, sitä kutsutaan 2D-joukoksi. Käytämme komentoa ReDim VBA:n avulla. Lisäksi käytämme VBA:n avulla Säilytä avainsanalla ReDim säilyttämään vanhat tiedot ennallaan. Tässä artikkelissa näytetään sinulle 2 nopeita tapoja " ReDim Preserve " a 2D-muotoinen joukko osoitteessa Excel VBA .

Lataa harjoituskirja

Makro ReDim säilyttää 2D.xlsm.xlsm

2 kätevää lähestymistapaa ReDim Preserve 2D-määrän säilyttämiseen Excel VBA: ssa

Tämä on perustietokanta, joka on luotu 2D-muotoinen joukko jossa on kolme riviä ja kaksi saraketta. Ensin luomme tämän array:n. Sitten lisäämme siihen toisen sarakkeen. Käytämme " ReDim Preserve "Lisäksi näytämme, mitä tapahtuu, jos emme käytä tätä.

Oletusarvoisesti voimme muuttaa vain matriisin viimeisen ulottuvuuden kokoa (eli sarakkeet tai yläraja). Transponoimme matriisin, muutamme sitten viimeisen ulottuvuuden ja transponoimme uudelleen, jotta voimme muuttaa molempien ulottuvuuksien kokoa. 2D-muotoinen joukko Excel VBA:ssa.

1. ReDim Säilytä viimeinen ulottuvuus 2D-muotoinen joukko

Määritellään ensin 2D-muotoinen joukko dynaamiseksi. Sitten, käyttämällä ReDim lausekkeella luodaan joukko, jossa on kolme riviä ja kaksi saraketta. Lopuksi käytetään komentoa ReDim lausekkeen kanssa uudelleen Säilytä avainsana kaksiulotteisen matriisin ylärajan kasvattamiseksi.

Vaiheet:

  • Aloita painamalla ALT+F11 tuoda esiin VBA-moduuli Vaihtoehtoisesti voit tehdä tämän ikkunasta Kehittäjä välilehti → valitse Visual Basic .
  • Sitten, alkaen Lisää välilehti → valitse Moduuli Kirjoitamme VBA-koodin tähän.

  • Kirjoita seuraavaksi seuraava koodi Moduuli ikkuna.
 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-koodin erittely

  • Ensinnäkin kutsumme Alimenettely " Redim_Preserve_2D_Array_Row_Rivi Redim_Preserve_2D_Array_Row ".
  • Sitten ilmoitamme muuttujan Our_Array dynaamisena joukkona.
  • Seuraavaksi määritetään matriisin koko. Alaraja on seuraava 3 , yläraja on 2 ja molemmat alkavat 1 .
  • Sen jälkeen osoitamme arvot arrayyn.
  • Tämän jälkeen syötämme arvot C6:D8 solualue.
  • Tämän jälkeen suoritamme koodin.
  • Niinpä, Tallenna ... Moduuli ja paina Suorita .

  • Tämän seurauksena se palauttaa arvot määritellyille solualueille. Näemme, että " Rachel " on rivillä 1 ja sarake 1 asema, joka määriteltiin seuraavasti ( 1,1 ) VBA-koodissa.

  • Nyt muutamme matriisin kokoa.
  • Lisää siis tämä edelliseen koodiin ja poista ensimmäinen kappale. Range.Value-lause . Lisäksi, miltä koodi näyttää, kuten näet alla olevasta tilannekuvasta.
 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 

  • Tässä olemme lisänneet ylärajaa ( 1 Osoitteeseen 2 ) - ( 1 Osoitteeseen 3 ) by 1 .
  • Sitten olemme lisänneet arvot arrayyn.
  • Jos nyt suoritamme tämän koodin, näemme, että aiemmat arvot eivät säily. Se palauttaa tyhjäksi aiemmat arvot.

  • Nyt voimme korjata tämän lisäämällä Säilytä avainsana osaksi ReDim-lausunto .
  • Lopuksi koko koodimme on tämä.
 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 

  • Jos me nyt Suorita tätä koodia, niin tuloste on tällainen. Näin ollen, me " ReDim Preserve " viimeisen ulottuvuuden 2D-muotoinen joukko Excel VBA... Seuraavassa menetelmässä näytetään, miten " ReDim Preserve " ja muutetaan molempien ulottuvuuksien kokoa.

Lue lisää: VBA hankkia ainutlaatuisia arvoja sarakkeesta Excel-monistoon (3 kriteeriä)

Samanlaisia lukemia

  • Kuinka nimetä taulukkomääritys Excelissä (helpoin askelin)
  • Excel VBA lukemaan CSV-tiedosto Array (4 ihanteellista esimerkkiä)
  • Kuinka muuntaa alue Excel VBA: n monisteeksi (3 tapaa)
  • Excel VBA: Poista kaksoiskappaleet monisteesta (2 esimerkkiä)

2. ReDim säilyttää molemmat ulottuvuudet 2D-määritys Excel VBA: ssa

Tässä viimeisessä menetelmässä näytämme, miten voit muuttaa kokoa ja " ReDim Preserve " 2D-muotoinen joukko Tässä käytämme VBA Transpose funktiota muuttaaksemme matriisin alarajan kokoa. Jos yritämme muuttaa matriisin alarajan kokoa ensimmäisessä menetelmässä, näemme " Alaindeksi alueen ulkopuolella " virhe. Katsotaan nyt ilman muuta, miten voimme korjata tämän ja saavuttaa tavoitteemme.

Vaiheet:

  • Ensinnäkin, kuten ensimmäisessä menetelmässä on esitetty , tuo esiin Moduuli ikkuna.
  • Toiseksi, lisää seuraavat koodirivit ensimmäiseen koodiin.
 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 
  • Lisäksi lopullisen menetelmän koodi näyttää tältä.
 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-koodin erittely

  • Ensinnäkin kutsumme Alimenettely " ReDim_Preserve_2D_Array_Both_Dimensions (ReDim_Preserve_2D_Array_Both_Dimensions) ".
  • Sen jälkeen loput koodit aina koodiin VBA Transpose funktio on sama kuin ensimmäisessä koodissa.
  • Tässä transponoimme joukon.
  • Tällöin kasvatamme joukon ylärajaa.
  • Sen jälkeen transponoimme joukon uudelleen, joten se muuttaa lopulta alarajaa.
  • Seuraavaksi syötämme arvot muuttuneen kokoiseen arrayyn säilyttäen vanhat tiedot.
  • Lopuksi kirjoitamme arvot solualueelle C6:E9 .
  • Sen jälkeen, kuten ensimmäisessä menetelmässä on esitetty , Suorita tämä koodi.
  • Näin voimme havainnollistaa, miten koodi säilyttää 2D-muotoinen joukko käyttämällä " ReDim Preserve " ja VBA Transpose toiminto.

Lue lisää: VBA transponoida Array Excelissä (3 menetelmää)

Muistettavat asiat

  • ReDim Preserve ei voi muuttaa array:n alarajaa. Sitä varten meidän on käytettävä komentoa Transpose toiminto.
  • Voimme käyttää vain ReDim dynaamisissa matriiseissa.

Päätelmä

Olemme näyttäneet sinulle kaksi nopeaa tapaa " ReDim Preserve " a 2D array Excel VBA:ssa. Jos sinulla on ongelmia näiden menetelmien kanssa tai jos sinulla on palautetta minulle, voit kommentoida alla. Lisäksi voit vierailla sivustollamme osoitteessa ExcelWIKI lisää Excel-aiheisia artikkeleita. Kiitos lukemisesta, jatka loistavaa työtä!

Hugh West on erittäin kokenut Excel-kouluttaja ja analyytikko, jolla on yli 10 vuoden kokemus alalta. Hän on koulutukseltaan laskentatoimen ja rahoituksen kandidaatti sekä kauppatieteiden maisteri. Hughilla on intohimo opettamiseen, ja hän on kehittänyt ainutlaatuisen opetusmenetelmän, jota on helppo seurata ja ymmärtää. Hänen asiantuntemuksensa Excelistä on auttanut tuhansia opiskelijoita ja ammattilaisia ​​maailmanlaajuisesti parantamaan taitojaan ja menestymään urallaan. Blogissaan Hugh jakaa tietämyksensä maailman kanssa tarjoamalla ilmaisia ​​Excel-opetusohjelmia ja verkkokoulutusta auttaakseen yksilöitä ja yrityksiä saavuttamaan täyden potentiaalinsa.