Come ridisegnare e conservare una matrice 2D in Excel VBA (2 modi semplici)

  • Condividi Questo
Hugh West

Una matrice è una variabile che conserva gli stessi tipi di dati. Se c'è una sola riga o una sola colonna di dati, si parla di matrice monodimensionale. Se invece ci sono più righe e colonne, si parla di matrice 2D. Si usa ReDim per ridimensionare un array in VBA. Inoltre, utilizziamo l'opzione Conservare con la parola chiave ReDim per mantenere intatti i vecchi dati. Questo articolo vi illustrerà 2 modi rapidi per " Conservazione ReDim " a Array 2D in Excel VBA .

Scarica il quaderno di esercizi

Macro per ReDim Preserva 2D.xlsm

2 approcci pratici per ridisegnare e conservare una matrice 2D in Excel VBA

Questo è il set di dati di base creato da un Array 2D con tre righe e due colonne. Per prima cosa, creeremo questo array. Poi, aggiungeremo un'altra colonna a questo array. Utilizzeremo l'opzione " Conservazione ReDim "Inoltre, dimostreremo cosa succede se non lo usiamo.

Per impostazione predefinita, è possibile ridimensionare solo l'ultima dimensione dell'array (cioè le colonne o il limite superiore). Trasporteremo l'array, quindi cambieremo l'ultima dimensione e poi trasporteremo di nuovo per ridimensionare entrambe le dimensioni dell'array. Array 2D in Excel VBA.

1. ReDim Conserva l'ultima dimensione della matrice 2D

Si definirà innanzitutto l'elemento Array 2D come dinamico. Poi, utilizzando l'opzione ReDim creeremo un array con tre righe e due colonne. Infine, utilizzeremo l'istruzione ReDim con l'istruzione Conservare parola chiave per aumentare il limite superiore dell'array bidimensionale.

Passi:

  • Per iniziare, premere ALT+F11 per visualizzare il Modulo VBA In alternativa, è possibile eseguire questa operazione dalla finestra Sviluppatore scheda → selezionare Visual Basic .
  • Poi, dal Inserire scheda → selezionare Modulo Digitare qui il codice VBA.

  • Quindi, digitare il seguente codice nel campo Modulo finestra.
 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 

Scomposizione del codice VBA

  • In primo luogo, chiamiamo il metodo Procedura secondaria " Redim_Preserve_2D_Array_Row ".
  • Quindi, dichiariamo la variabile Il nostro_array come array dinamico.
  • Successivamente, si definisce la dimensione dell'array. Il limite inferiore è 3 , il limite superiore è 2 ed entrambi partono da 1 .
  • Quindi, assegniamo i valori all'array.
  • Dopodiché, si inseriscono i valori nel file C6:D8 gamma di celle.
  • Dopodiché, eseguiamo il codice.
  • Quindi, Risparmiare il Modulo e premere Correre .

  • Di conseguenza, restituirà i valori agli intervalli di celle definiti. Possiamo vedere che " Rachele " è nella riga 1 e la colonna 1 posizione, che è stata definita come ( 1,1 ) nel codice VBA.

  • Ora ridimensioniamo l'array.
  • Quindi, aggiungete questo al codice precedente e rimuovete il primo elemento Dichiarazione Range.Value Inoltre, come appare il codice, lo si può vedere nell'istantanea qui sotto.
 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 

  • In questo caso, abbiamo aumentato il limite superiore da ( 1 A 2 ) a ( 1 A 3 ) da 1 .
  • Quindi, abbiamo aggiunto i valori all'array.
  • Se si esegue questo codice, si noterà che i valori precedenti non sono stati conservati e verranno restituiti vuoti per i valori precedenti.

  • Ora, possiamo risolvere questo problema aggiungendo l'opzione Conservare la parola chiave nel Dichiarazione ReDim .
  • Infine, il nostro codice completo sarà questo.
 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 Fine Sub 

  • Ora, se noi Correre questo codice, allora l'output sarà come questo. Quindi, noi " Conservazione ReDim " l'ultima dimensione di un Array 2D in Excel VBA. Ora, il prossimo metodo vi mostrerà come " Conservazione ReDim " e ridimensionare entrambe le dimensioni dell'array.

Per saperne di più: VBA per ottenere valori unici da una colonna in una matrice in Excel (3 criteri)

Letture simili

  • Come dare un nome a una matrice di tabelle in Excel (con semplici passaggi)
  • Excel VBA per leggere file CSV in array (4 esempi ideali)
  • Come convertire un intervallo in una matrice in Excel VBA (3 modi)
  • Excel VBA: rimuovere i duplicati da una matrice (2 esempi)

2. ReDim conserva entrambe le dimensioni di una matrice 2D in Excel VBA

In questo metodo finale, vi mostreremo i passaggi per ridimensionare e " Conservazione ReDim " il Array 2D Qui si utilizzerà il metodo VBA Trasposizione per ridimensionare il limite inferiore dell'array. Se provassimo a ridimensionare il limite inferiore dell'array con il primo metodo, vedremmo la scritta " Sottoscritto fuori dall'intervallo "Ora, senza ulteriori indugi, vediamo come risolvere questo problema e raggiungere il nostro obiettivo.

Passi:

  • In primo luogo, come mostrato nel primo metodo , portare in alto il Modulo finestra.
  • In secondo luogo, aggiungere le seguenti righe di codice al primo codice.
 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 
  • Inoltre, il codice del metodo finale si presenta come segue.
 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 

Scomposizione del codice VBA

  • In primo luogo, chiamiamo il metodo Procedura secondaria " ReDim_Preserve_2D_Array_Both_Dimensions ".
  • Poi, il resto dei codici fino al VBA Trasposizione sono gli stessi del primo codice.
  • In questo caso, stiamo trasponendo l'array.
  • Quindi, stiamo aumentando il limite superiore dell'array.
  • Dopo di che, trasponiamo nuovamente la matrice. Pertanto, alla fine cambierà il limite inferiore.
  • Successivamente, si inseriscono i valori per l'array ridimensionato, conservando i vecchi dati.
  • Infine, scriviamo i valori nell'intervallo di celle C6:E9 .
  • Dopo di che, come mostrato nel primo metodo , Correre questo codice.
  • Così, possiamo visualizzare come il codice preservi un Array 2D utilizzando il pulsante " Conservazione ReDim " e il VBA Trasposizione funzione.

Per saperne di più: VBA per trasporre una matrice in Excel (3 metodi)

Cose da ricordare

  • Conservazione ReDim non può modificare il limite inferiore dell'array. Per farlo, è necessario utilizzare l'opzione Trasposizione funzione.
  • Possiamo utilizzare solo ReDim su array dinamici.

Conclusione

Vi abbiamo mostrato due modi rapidi per " Conservazione ReDim " a 2D array in Excel VBA. Se riscontrate qualche problema con questi metodi o avete un feedback da darmi, non esitate a commentare qui sotto. Inoltre, potete visitare il nostro sito ExcelWIKI per altri articoli su Excel. Grazie per la lettura, continuate a eccellere!

Hugh West è un istruttore e analista di Excel di grande esperienza con oltre 10 anni di esperienza nel settore. Ha conseguito una laurea in Contabilità e Finanza e un Master in Economia Aziendale. Hugh ha una passione per l'insegnamento e ha sviluppato un approccio didattico unico che è facile da seguire e capire. La sua conoscenza approfondita di Excel ha aiutato migliaia di studenti e professionisti in tutto il mondo a migliorare le proprie competenze ed eccellere nella propria carriera. Attraverso il suo blog, Hugh condivide le sue conoscenze con il mondo, offrendo esercitazioni gratuite su Excel e formazione online per aiutare le persone e le aziende a raggiungere il loro pieno potenziale.