Kako ReDim ohraniti 2D polje v Excel VBA (2 preprosta načina)

  • Deliti To
Hugh West

Polje je spremenljivka, ki hrani iste vrste podatkov. Če je v njem samo ena vrstica ali en stolpec podatkov, ga imenujemo enodimenzionalno polje. Če pa je v njem več vrstic in stolpcev, ga imenujemo dvodimenzionalno polje. Uporabljamo ReDim za spreminjanje velikosti polja v VBA. Poleg tega uporabljamo Ohranite s ključno besedo ReDim da ohranite stare podatke nedotaknjene. Ta članek vam bo pokazal. 2 hitri načini za " ReDim Preserve " a 2D-polje na spletnem mestu Excel VBA .

Prenesi delovni zvezek za prakso

Makro za ReDim Preserve 2D.xlsm

2 priročna pristopa za ReDim ohranitev 2D polja v Excel VBA

To je osnovni nabor podatkov, ustvarjen iz 2D-polje s tremi vrsticami in dvema stolpcema. Najprej bomo ustvarili to polje. Nato bomo temu polju dodali še en stolpec. Uporabili bomo " ReDim Preserve "Poleg tega bomo pokazali, kaj se zgodi, če tega ne uporabimo.

Privzeto lahko spremenimo samo zadnjo dimenzijo polja (tj. stolpce ali zgornjo mejo). Polje bomo transponirali, nato spremenili zadnjo dimenzijo in nato ponovno transponirali, da spremenimo obe dimenziji polja. 2D-polje v programu Excel VBA.

1. ReDim Ohrani zadnjo dimenzijo 2D polja

Najprej bomo opredelili 2D-polje kot dinamično. Nato z uporabo ReDim bomo ustvarili polje s tremi vrsticami in dvema stolpcema. Nazadnje bomo uporabili ukaz ReDim izjavo ponovno z Ohranite ključna beseda za povečanje zgornje meje dvodimenzionalnega polja.

Koraki:

  • Za začetek pritisnite ALT+F11 da prikličete Modul VBA To lahko storite tudi v oknu Razvijalec zavihek → izberite Visual Basic .
  • Nato iz Vstavite zavihek → izberite Modul . Tukaj bomo vnesli kodo VBA.

  • Nato vnesite naslednjo kodo v Modul okno.
 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 

Razčlenitev kode VBA

  • Najprej pokličemo Podpostopek " Redim_Preserve_2D_Array_Row ".
  • Nato razglasimo spremenljivko Naš_mrežo kot dinamično polje.
  • Nato določimo velikost polja. Spodnja meja je 3 , zgornja meja je 2 , oba pa se začneta z 1 .
  • Nato v polje dodelimo vrednosti.
  • Nato vnesemo vrednosti v C6:D8 območje celic.
  • Nato bomo kodo izvedli.
  • Torej, Shrani . Modul in pritisnite Spustite .

  • Posledično bo vrnil vrednosti v opredeljena območja celic. Vidimo, da je " Rachel " je v vrstici 1 in stolpec 1 položaj, ki je bil opredeljen kot ( 1,1 ) v kodi VBA.

  • Zdaj bomo spremenili velikost polja.
  • To dodajte prejšnji kodi in odstranite prvo Izjava Range.Value . poleg tega je koda videti tako, kot si lahko ogledate na spodnjem posnetku.
 ReDim Our_Array(1 Do 3, 1 Do 3) Our_Array(1, 3) = "Teksas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value = Our_Array 

  • Pri tem smo zgornjo mejo povečali z ( 1 Na naslov 2 ) na ( 1 Na naslov 3 ) z 1 .
  • Nato smo vrednosti dodali v polje.
  • Če zdaj izvedemo to kodo, vidimo, da se prejšnje vrednosti ne bodo ohranile. Vračalo bo prazno za prejšnje vrednosti.

  • To lahko popravimo tako, da dodamo Ohraniti ključno besedo v Izjava ReDim .
  • Končno bo naša celotna koda naslednja.
 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 

  • Če zdaj Spustite to kodo, potem bo rezultat takšen. Tako bomo " ReDim Preserve " zadnja dimenzija 2D-polje v programu Excel VBA.. Naslednja metoda vam bo pokazala, kako " ReDim Preserve " in spremenite velikost obeh dimenzij polja.

Preberite več: VBA za pridobivanje edinstvenih vrednosti iz stolpca v polje v Excelu (3 merila)

Podobna branja

  • Kako poimenovati tabelsko polje v Excelu (z enostavnimi koraki)
  • Excel VBA za branje datoteke CSV v polje (4 idealni primeri)
  • Kako pretvoriti obseg v polje v programu Excel VBA (3 načini)
  • Excel VBA: Odstranjevanje dvojnikov iz polja (2 primera)

2. ReDim Ohranite obe dimenziji 2D polja v Excelu VBA

V tej zadnji metodi vam bomo pokazali korake za spreminjanje velikosti in " ReDim Preserve " 2D-polje . V tem primeru bomo uporabili VBA Transpozicija Če bi s prvo metodo poskušali spremeniti spodnjo mejo polja, bi se pri tem pojavil znak " Podnapis zunaj območja " napaka. Zdaj si brez nadaljnjega oglašanja oglejmo, kako lahko to popravimo in dosežemo svoj cilj.

Koraki:

  • Prvič, kot je prikazano v prvi metodi , prikažite Modul okno.
  • V prvo kodo dodajte naslednje vrstice kode.
 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 
  • Poleg tega je koda za končno metodo videti takole.
 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 

Razčlenitev kode VBA

  • Najprej pokličemo Podpostopek " ReDim_Preserve_2D_Array_Both_Dimensions ".
  • Nato so ostale kode do VBA Transpozicija so enaki kot v prvi kodi.
  • V tem primeru transponiramo polje.
  • Tako povečamo zgornjo mejo polja.
  • Nato polje ponovno transponiramo. Zato se bo na koncu spremenila spodnja meja.
  • Nato vnesemo vrednosti za spremenjeno velikost polja, pri čemer ohranimo stare podatke.
  • Na koncu vrednosti zapišemo v območje celic C6:E9 .
  • Nato, kot je prikazano v prvi metodi , Spustite ta koda.
  • Tako si lahko predstavljamo, kako koda ohranja 2D-polje z uporabo " ReDim Preserve " in VBA Transpozicija funkcijo.

Preberite več: VBA za transpozicijo polja v Excelu (3 metode)

Stvari, ki si jih je treba zapomniti

  • ReDim Preserve ne moremo spremeniti spodnje meje polja. Za to moramo uporabiti Transpozicija funkcijo.
  • Uporabljamo lahko samo ReDim na dinamičnih poljih.

Zaključek

Pokazali smo vam dva hitra načina za " ReDim Preserve " a 2D polje Če imate težave v zvezi s temi metodami ali povratne informacije zame, jih lahko komentirate spodaj. Poleg tega lahko obiščete našo spletno stran ExcelWIKI za več člankov, povezanih z Excelom. Hvala za branje in še naprej dosegajte odličnost!

Hugh West je zelo izkušen trener Excela in analitik z več kot 10-letnimi izkušnjami v industriji. Po izobrazbi je diplomirani računovodstvo in finance ter magisterij poslovne administracije. Hugh ima strast do poučevanja in je razvil edinstven pristop k poučevanju, ki ga je enostavno slediti in razumeti. Njegovo strokovno znanje o Excelu je pomagalo na tisoče študentom in strokovnjakom po vsem svetu, da so izboljšali svoje sposobnosti in se izkazali v karieri. Prek svojega bloga Hugh deli svoje znanje s svetom, ponuja brezplačne vadnice za Excel in spletno usposabljanje, ki posameznikom in podjetjem pomaga doseči njihov polni potencial.