Hvordan ReDim Preserve 2D Array i Excel VBA (2 enkle måter)

  • Dele Denne
Hugh West

En matrise er en variabel som beholder samme type data. Hvis det bare er én rad eller én kolonne med data, er det kjent som en endimensjonal matrise. Men når det er mer enn én rad og kolonne, kalles det en 2D-matrise. Vi bruker ReDim for å endre størrelsen på en matrise i VBA. I tillegg bruker vi Bevar søkeordet med ReDim for å holde de gamle dataene intakte. Denne artikkelen vil vise deg 2 raske måter å " ReDim Preserve " en 2D-array i Excel VBA .

Last ned øvelsesarbeidsbok

Makro til ReDim Preserve 2D.xlsm

2 praktiske tilnærminger til ReDim Preserve 2D Array i Excel VBA

Dette er basisdatasettet opprettet fra en 2D-array med tre rader og to kolonner. Først vil vi lage denne matrisen. Deretter vil vi legge til en annen kolonne til denne matrisen. Vi vil bruke « ReDim Preserve » for å gjøre det. I tillegg vil vi demonstrere hva som skjer hvis vi ikke bruker dette.

Som standard kan vi bare endre størrelsen på den siste dimensjonen til matrisen (dvs. kolonnene eller den øvre grensen). Vi vil transponere matrisen, deretter endre den siste dimensjonen, og deretter transponere igjen for å endre størrelsen på begge dimensjonene til 2D-matrisen i Excel VBA.

1 ReDim Preserve Last Dimension 2D Array

Vi vil først definere 2D-arrayen som dynamisk. Deretter, ved å bruke ReDim -setningen, vil vi opprette enarray med tre rader og to kolonner. Til slutt vil vi bruke ReDim -setningen igjen med Bevar søkeordet til øke den øvre grensen for den todimensjonale matrisen.

Trinn:

  • Trykk ALT+F11 til å begynne med for å få opp vinduet VBA-modul . Alternativt kan du gjøre dette fra Utvikler -fanen →  velg Visual Basic .
  • Deretter fra Sett inn fane → velg Modul . Vi skriver inn VBA-koden her.

  • Deretter skriver du inn følgende kode i modulen vindu.
8388

VBA-kodesammenbrudd

  • For det første ringer vi Underprosedyren " Redim_Preserve_2D_Array_Row ".
  • Deretter erklærer vi variabelen Our_Array som en dynamisk matrise.
  • Deretter definerer vi størrelsen på matrisen. Den nedre grensen er 3 , den øvre grensen er 2 , og begge starter fra 1 .
  • Deretter tildeler vi verdier til matrisen .
  • Etter det legger vi inn verdiene til C6:D8 celleområdet.
  • Etter det, vil kjøre koden.
  • Lagre modulen og trykk Kjør .

  • Som et resultat vil den returnere verdiene til de definerte celleområdene. Vi kan se at « Rachel » er i rad 1 og kolonne 1 posisjon,som ble definert som ( 1,1 ) i VBA-koden.

  • Nå skal vi endre størrelsen på matrisen.
  • Så, legg dette til den forrige koden og fjern den første Range.Value-setningen . Dessuten, hvordan koden ser ut kan du se fra øyeblikksbildet nedenfor.
4531

  • Her har vi økt den øvre grensen fra ( 1 Til 2 ) til ( 1 Til 3 ) av 1 .
  • Deretter har vi lagt til verdiene til matrisen.
  • Nå hvis vi kjører denne koden, vil vi se at de tidligere verdiene ikke er bevart. Det vil returnere tomt for de forrige verdiene.

  • Nå kan vi fikse dette ved å legge til Bevar nøkkelordet i ReDim-erklæring .
  • Til slutt vil hele koden vår være denne.
2661

  • Nå, hvis vi Kjør denne koden, så blir utdataene slik. Dermed vil vi " ReDim bevare " den siste dimensjonen til en 2D-array i Excel VBA.. Nå vil neste metode vise deg hvordan du " ReDim Bevar ” og endre størrelsen på begge dimensjonene til matrisen.

Les mer: VBA for å få unik Verdier fra kolonne til matrise i Excel (3 kriterier)

Lignende avlesninger

  • Hvordan navngi en tabellmatrise i Excel (med Enkle trinn)
  • Excel VBA for å lese CSV-fil til matrise (4 ideelle eksempler)
  • Hvordan konvertere område til matrise i ExcelVBA (3 måter)
  • Excel VBA: Fjern duplikater fra en array (2 eksempler)

2. ReDim Bevar begge dimensjonene 2D-array i Excel VBA

I denne siste metoden vil vi vise deg trinnene for å endre størrelse og « ReDim Bevar » 2D-matrisen . Her vil vi bruke VBA Transpose -funksjonen for å endre størrelsen på den nedre grensen til matrisen. Hvis vi prøvde å endre størrelsen på den nedre grensen til matrisen i den første metoden, vil vi se feilen " Subscript utenfor område ". Nå, uten videre, la oss se hvordan vi kan fikse dette og nå målet vårt.

Trinn:

  • Først, som vist i den første metoden , få frem Modul -vinduet.
  • For det andre legger du til følgende kodelinjer i første kode.
6191
  • I tillegg ser koden for den endelige metoden slik ut.
6405

VBA-kodesammenbrudd

  • For det første kaller vi Underprosedyren " ReDim_Preserve_2D_Array_Both_Dimensions " .
  • Deretter er resten av kodene opp til VBA Transpose -funksjonen de samme som i den første koden.
  • Her har vi transponerer matrisen.
  • Deretter øker vi den øvre grensen for matrisen.
  • Etter det transponerer vi matrisen igjen. Derfor vil den til slutt endre den nedre grensen.
  • Deretter legger vi inn verdiene for matrisen med endret størrelse mensbevare de gamle dataene.
  • Til slutt skriver vi verdiene til celleområdet C6:E9 .
  • Etter at at som vist i den første metoden , Kjør denne koden.
  • Dermed kan vi visualisere hvordan koden bevarer en 2D-array som bruker « ReDim Preserve » og VBA Transpose -funksjonen.

Les mer: VBA for å transponere array i Excel (3 metoder)

Ting å huske

  • ReDim Preserve kan ikke endre den nedre grensen til matrisen. For å gjøre det må vi bruke funksjonen Transponere .
  • Vi kan bare bruke ReDim på dynamiske arrays.

Konklusjon

Vi har vist deg to raske måter å " ReDim Preserve " en 2D array i Excel VBA. Hvis du har problemer med disse metodene eller har tilbakemeldinger til meg, kan du gjerne kommentere nedenfor. I tillegg kan du besøke nettstedet vårt ExcelWIKI for flere Excel-relaterte artikler. Takk for at du leser, fortsett å utmerke deg!

Hugh West er en svært erfaren Excel-trener og analytiker med over 10 års erfaring i bransjen. Han har en bachelorgrad i regnskap og finans og en mastergrad i bedriftsøkonomi. Hugh har en lidenskap for undervisning og har utviklet en unik undervisningstilnærming som er enkel å følge og forstå. Hans ekspertkunnskap om Excel har hjulpet tusenvis av studenter og fagfolk over hele verden med å forbedre sine ferdigheter og utmerke seg i karrieren. Gjennom bloggen sin deler Hugh sin kunnskap med verden, og tilbyr gratis Excel-opplæringer og nettbasert opplæring for å hjelpe enkeltpersoner og bedrifter å nå sitt fulle potensial.