Cum să ReDim Preservează Rețeaua 2D în Excel VBA (2 moduri simple)

  • Imparte Asta
Hugh West

O matrice este o variabilă care păstrează aceleași tipuri de date. Dacă există doar un singur rând sau o singură coloană de date, atunci este cunoscută sub numele de matrice unidimensională. Cu toate acestea, atunci când există mai multe rânduri și coloane, se numește matrice 2D. Utilizăm ReDim pentru a redimensiona o matrice în VBA. În plus, folosim funcția Păstrați cu cuvântul cheie ReDim pentru a păstra intacte vechile date. Acest articol vă va arăta 2 modalități rapide de a " ReDim Preserve " a Matricea 2D în Excel VBA .

Descărcați caietul de practică

Macro to ReDim Preserve 2D.xlsm

2 Abordări practice pentru ReDim Preserve 2D Array în Excel VBA

Acesta este setul de date de bază creat dintr-un Matricea 2D cu trei rânduri și două coloane. În primul rând, vom crea această matrice. Apoi, vom adăuga o altă coloană la această matrice. Vom folosi elementul " ReDim Preserve "În plus, vom demonstra ce se întâmplă dacă nu folosim acest lucru.

În mod implicit, putem redimensiona doar ultima dimensiune a tabloului (adică coloanele sau limita superioară). Vom transpune tabloul, apoi vom modifica ultima dimensiune și apoi vom transpune din nou pentru a redimensiona ambele dimensiuni ale tabloului Matricea 2D în Excel VBA.

1. ReDim Păstrarea ultimei dimensiuni Rețea 2D Array

Vom defini mai întâi Matricea 2D ca fiind dinamică. Apoi, folosind ReDim vom crea o matrice cu trei rânduri și două coloane. În cele din urmă, vom folosi instrucțiunea ReDim din nou cu ajutorul instrucțiunii Păstrați cuvânt cheie pentru a crește limita superioară a matricei bidimensionale.

Pași:

  • Pentru început, apăsați ALT+F11 pentru a aduce în discuție Modul VBA Alternativ, puteți face acest lucru din fereastra Dezvoltator fila → selectați Visual Basic .
  • Apoi, de la Introduceți fila → selectați Modul Vom introduce aici codul VBA.

  • Apoi, introduceți următorul cod în fișierul Modul fereastră.
 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 

Defalcarea codului VBA

  • În primul rând, apelăm la Subprocedură " Redim_Preserve_2D_Array_Row ".
  • Apoi, declarăm variabila Matricea_noastră ca o matrice dinamică.
  • În continuare, definim dimensiunea tabloului. Limita inferioară este 3 , limita superioară este 2 , și ambele pornesc de la 1 .
  • Apoi, atribuim valori la matrice.
  • După aceea, introducem valorile în C6:D8 interval de celule.
  • După aceea, vom executa codul.
  • Deci, Salvați la Modul și apăsați Rulați .

  • Ca urmare, va returna valorile în intervalele de celule definite. Putem observa că " Rachel " se află în rândul 1 și coloana 1 care a fost definită ca fiind ( 1,1 ) în codul VBA.

  • Acum, vom redimensiona matricea.
  • Deci, adăugați acest lucru la codul anterior și eliminați primul Declarație Range.Value . În plus, cum arată codul puteți vedea în clipul de mai jos.
 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 

  • Aici, am mărit limita superioară de la ( 1 La 2 ) la ( 1 La 3 ) prin 1 .
  • Apoi, am adăugat valorile în matrice.
  • Acum, dacă executăm acest cod, vom vedea că valorile anterioare nu sunt păstrate. Se va returna un spațiu gol pentru valorile anterioare.

  • Acum, putem rezolva acest lucru adăugând Păstrați cuvântul cheie în Declarația ReDim .
  • În cele din urmă, codul nostru complet va fi următorul.
 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 

  • Acum, dacă noi Rulați acest cod, atunci ieșirea va fi ca aceasta. Astfel, vom " ReDim Preserve ", ultima dimensiune a unui Matricea 2D în Excel VBA... Acum, următoarea metodă vă va arăta cum să " ReDim Preserve " și redimensionați ambele dimensiuni ale matricei.

Citește mai mult: VBA pentru a obține valori unice din coloană în matrice în Excel (3 criterii)

Lecturi similare

  • Cum se numește o matrice de tabel în Excel (cu pași simpli)
  • Excel VBA pentru a citi fișierul CSV în matrice (4 exemple ideale)
  • Cum să convertiți intervalul în matrice în Excel VBA (3 moduri)
  • Excel VBA: Eliminarea duplicatelor dintr-o matrice (2 exemple)

2. ReDim Preserve Both Dimensions 2D Array în Excel VBA

În această metodă finală, vă vom arăta pașii pentru a redimensiona și " ReDim Preserve " Matricea 2D Aici, vom folosi VBA Transpose pentru a redimensiona limita inferioară a tabloului. Dacă am încerca să redimensionăm limita inferioară a tabloului în prima metodă, atunci vom vedea că apare " Subscript în afara intervalului "eroare." Acum, fără alte discuții, haideți să vedem cum putem remedia acest lucru și să ne atingem obiectivul.

Pași:

  • În primul rând, așa cum se arată în prima metodă , aduceți la suprafață Modul fereastră.
  • În al doilea rând, adăugați următoarele linii de cod în primul cod.
 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 
  • În plus, codul pentru metoda finală arată astfel.
 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 

Defalcarea codului VBA

  • În primul rând, apelăm la Subprocedură " ReDim_Preserve_2D_Array_Both_Dimensions ".
  • Apoi, restul codurilor până la VBA Transpose sunt aceleași ca în primul cod.
  • Aici, transpunem matricea.
  • În acest caz, creștem limita superioară a matricei.
  • După aceea, transpunem din nou matricea. Prin urmare, în cele din urmă se va modifica limita inferioară.
  • În continuare, introducem valorile pentru matricea redimensionată, păstrând în același timp vechile date.
  • În cele din urmă, scriem valorile în intervalul de celule C6:E9 .
  • După aceea, așa cum se arată în prima metodă , Rulați acest cod.
  • Astfel, putem vizualiza modul în care codul păstrează un Matricea 2D folosind " ReDim Preserve " și VBA Transpose funcție.

Citește mai mult: VBA pentru a transpune matricea în Excel (3 metode)

Lucruri de reținut

  • ReDim Preserve nu poate modifica limita inferioară a tabloului. Pentru a face acest lucru, trebuie să folosim Transpuneți funcție.
  • Putem folosi doar ReDim pe rețele dinamice.

Concluzie

V-am arătat două modalități rapide de a " ReDim Preserve " a 2D array în Excel VBA. Dacă întâmpinați probleme în legătură cu aceste metode sau dacă aveți vreun feedback pentru mine, nu ezitați să comentați mai jos. În plus, puteți vizita site-ul nostru ExcelWIKI pentru mai multe articole legate de Excel. Vă mulțumim pentru lectură și continuați să excelați!

Hugh West este un trainer și analist Excel cu o experiență de peste 10 ani în industrie. Deține o diplomă de licență în contabilitate și finanțe și un master în administrarea afacerilor. Hugh are o pasiune pentru predare și a dezvoltat o abordare unică de predare care este ușor de urmărit și de înțeles. Cunoștințele sale experte despre Excel au ajutat mii de studenți și profesioniști din întreaga lume să-și îmbunătățească abilitățile și să exceleze în cariera lor. Prin blogul său, Hugh își împărtășește cunoștințele lumii, oferind tutoriale gratuite Excel și instruire online pentru a ajuta persoanele și companiile să-și atingă întregul potențial.