Excel VBA-matriser

Excel VBA Array är inget annat än en variabel som kan innehålla samma datatyp. En array är en grupp av en variabel som kan lagra mer än en variabel. Variabelns namn kommer att vara samma men kan innehålla olika värden i en enda variabel. En VBA-grupp är en typ av variabel som används för att lagra listor med data av samma typ.

Om vi ​​har 5 celler som har nummer måste vi förklara 5 variabler för att innehålla 5 olika siffror i intervallet. Men med hjälp av matris kan vi hålla fem olika värden i en enda variabel.

Hur använder man Excel VBA-matriser?

Låt oss förstå hur du använder Excel VBA Arrays och deras typer med några exempel.

Du kan ladda ner denna VBA Arrays Excel-mall här - VBA Arrays Excel-mall

Exempel 1

Ta en titt på exemplet nedan. X är en variabel som innehåller datatypen för heltal.

Koda:

 Sub Array_Example1 () Dim x Som heltal x = 1 End Sub 

Tilldela nu ett värde på 1 till den deklarerade variabeln x.

Låt oss infoga värdet 1 i cellen A1.

Koda:

 Sub Array_Example1 () Dim x Som heltal x = 1 Område ("A1"). Värde = x 
 Avsluta under 

X-värdet är lika med 1 och i intervallet, A1 kommer värdet att läggas in som värdet på x dvs. värdet på x är 1. Kör nu koden med F5-tangenten eller manuellt för att se resultat.

I exemplet ovan har x bara en variabel som är allt. Men om jag vill infoga 5 på varandra följande nummer med hjälp av den enda variabeln måste jag använda typmatrisvariabeln som kan innehålla många variabla värden i ett enda variabelnamn.

Exempel 2

Titta nu på nedanstående exempel. Ett variabelt namn är x och datatypen är LÅNG. Men medan jag förklarar variabeln själv har jag öppnat konsolen och nämnt 1 till 5. Detta betyder att variabel x kommer att innehålla 5 olika typer av värden.

Koda:

 Sub Array_Example () Dim x (1 till 5) Så länge, i som heltal End Sub 

Efter det har jag tilldelat värdena till varje variabel. X (1) = 20 betyder att den första variabeln ska vara lika med värdet på 20. X (2) = 25 betyder att den andra variabeln ska vara lika med värdet på 25 och så vidare.

Koda:

 Sub Array_Example () Dim x (1 till 5) Så länge, i som heltal x (1) = 20 x (2) = 25 x (3) = 44 x (4) = 78 x (5) = 96 End Sub 

Senare har jag förklarat ytterligare en variabel som heter "I", detta är den andra typen av en variabel och har datatypen heltal .

I nästa steg har jag använt FÖR-slingor för att infoga tilldelade nummer i matrisen i den första kolumnen. Jag har ställt in värdet på variabeln i till 1 och jag har instruerat slingan att köra 1 till 5 gånger. När slingan körs första gången kommer i- värdet att vara lika med 1. CELLER (I, 1) .värde = x (i) betyder detta för första gången att jag är lika med 1 dvs. CELLER (1, 1) .värde = x (1), i den första raden första kolumnen (Cell A1) kommer värdet att vara det första array-värdet ( x (1) ), dvs 20.

När slingan körs för andra gången blir i- värdet 2 dvs. CELLER (2, 1) .värde = x (2), i den andra raden första kolumnen (A2) blir värdet det andra array-värdet ( x (2) ) dvs 25.

Koda:

 Sub Array_Example () Dim x (1 till 5) Så länge, i som heltal x (1) = 20 x (2) = 25 x (3) = 44 x (4) = 78 x (5) = 96 För i = 1 till 5 celler (i, 1). Värde = x (i) Nästa i slutet Sub 

Så här när slingorna fortsätter att fungera kommer värdena att fortsätta ändras. När slingorna körs för tredje gången A3-cellvärdet kommer att vara 44, kommer fjärde gången att löpa A4-cellvärdet att vara 78 när slingorna körs för sista tiden eller femte gången A5-cellvärdet blir 96.

Efter att ha kört koden med F5-tangenten eller manuellt får vi resultat som visas nedan.

Typer av matriser i Excel

Arrays har olika typer i VBA. Det finns fem typer av matriser tillgängliga i Excel.

  • Statisk matris
  • Dynamisk matris
  • En dimensionell matris
  • Två dimensionella array
  • Flerdimensionell matris

Statisk matris

I denna typ av array bestäms arrayens längd i förväg och förblir konstant.

Koda:

 Sub Static_Example () Dim ArrayType (1 till 3) Som heltal ArrayType (1) = 0 ArrayType (2) = 1 ArrayType (3) = 2 Cells (1, 1) .Value = ArrayType (1) Cells (1, 2) .Value = ArrayType (2) Celler (1, 3) .Value = ArrayType (3) End Sub 

I ovanstående kod bestäms ArrayType-längd i god tid i förväg som 1 till 3 och datatypen är heltal.

Efter att ha kört koden med F5-tangenten eller manuellt får vi resultat som visas nedan.

Dynamisk matris

I denna typ av array bestäms inte längden på arrayen i god tid i förväg.

Koda:

 Sub Dynamic_Example () Dim ArrayType () Som Variant ReDim ArrayType (3) ArrayType (1) = "Mitt namn" ArrayType (2) = "är" ArrayType (3) = "Excel" -celler (1, 1) .Value = ArrayType (1) Celler (1, 2) .Value = ArrayType (2) Cells (1, 3) .Value = ArrayType (3) End Sub 

I denna typ av array är data Variant och längden bestäms inte här. Efter att ha deklarerat variabeln har jag tilldelat arrayens längd med hjälp av ReDim- funktionen. Den här matrisen kommer att införa värdena som denna cell A1 = Mitt namn, Cell B1 = är, Cell C1 = Excel.

En dimensionell matris

I denna typ av array bestäms längden men i en dimension fungerar den.

Koda:

 Sub One_Dimensional () Dim OneDimension (1 till 3) Som String OneDimension (1) = 40 OneDimension (2) = 50 OneDimension (3) = 15 End Sub 

Visa dessa värden i VBA-meddelanderuta.

Koda:

 Sub One_Dimensional () Dim OneDimension (1 till 3) Som String OneDimension (1) = 40 OneDimension (2) = 50 OneDimension (3) = 15 MsgBox OneDimension (1) & ", " & OneDimension (2) & ", " & OneDimension (3) End Sub 

Kör den här koden med F5-tangenten eller manuellt så får vi följande resultat.

Två dimensionella array

I denna typ av array bestäms längden i två dimensioner och den fungerar.

Koda:

 Sub Two_Dimensional () Dim TwoDimension (1 till 2, 1 till 2) Så länge Dim i som heltal Dim j Som heltal TwoDimension (1, 2) = 40 TwoDimension (2, 1) = 50 TwoDimension (1, 1) = 15 TwoDimension (2, 2) = 10 End Sub 

Nu för att lagra dessa värden i cellerna under koden.

Koda:

 Sub Two_Dimensional () Dim TwoDimension (1 till 2, 1 till 2) Så länge Dim i som heltal Dim j Som heltal TwoDimension (1, 2) = 40 TwoDimension (2, 1) = 50 TwoDimension (1, 1) = 15 TwoDimension (2, 2) = 10 För i = 1 till 2 För j = 1 till 2 celler (i, j) = TwoDimension (i, j) Nästa j Nästa i End Sub 

Detta lagrar uppgifterna som nedan.

Flerdimensionell matris

I denna typ av array bestäms längden men i flerdimension fungerar den.

Koda:

 Sub Multi_Dimensional () Dim TwoDimension (1 till 3, 1 till 2) Så länge Dim i som heltal Dim j Som heltal MultiDimension (1, 1) = 15 MultiDimension (1, 2) = 40 MultiDimension (2, 1) = 50 MultiDimension (2, 2) = 10 MultiDimension (3, 1) = 98 MultiDimension (3, 2) = 54 

Om du först tittar på ovanstående kod har jag förklarat matrisen som 1 till 3 och sedan 1 till 2. Det betyder att när jag skriver matrisen först kan jag bara använda 1 till 3 nummer men i det andra utrymmet kan jag bara använda 1 till 2 inte 1 till 3.

Med Loop kan vi infoga värden i celler. Jag har använt två slingor för en multidimensionell matris.

Koda:

 Sub Multi_Dimensional () Dim TwoDimension (1 till 3, 1 till 2) Så länge Dim i som heltal Dim j Som heltal MultiDimension (1, 1) = 15 MultiDimension (1, 2) = 40 MultiDimension (2, 1) = 50 MultiDimension (2, 2) = 10 MultiDimension (3, 1) = 98 MultiDimension (3, 2) = 54 För i = 1 till 3 För j = 1 till 2 celler (i, j) = MultiDimension (i, j) Nästa j Nästa i End Sub 

Efter att ha kört koden med F5-tangenten eller manuellt får vi resultat som visas nedan.

Saker att komma ihåg

  • En matris räknar värdena från noll, inte från 1.
  • Array (0, 0) betyder första radens första kolumn.
  • Denna excel-makrofil måste sparas som en makroaktiverad arbetsbok.
  • I fallet med dynamisk matris måste vi tilldela värdet på matris med hjälp av REDIM-funktionen i VBA.

Rekommenderade artiklar

Detta har varit en guide till VBA Arrays. Här diskuterade vi typer av matriser i VBA och hur man använder Excel VBA-matriser tillsammans med några praktiska exempel och nedladdningsbara excelmall. Du kan också gå igenom våra andra föreslagna artiklar -

  1. FINN Funktion i Excel med exempel
  2. Vad är VBA-funktion i Excel?
  3. Guide till VBA Range Object
  4. Hur använder jag VBA VLOOKUP-funktion?

Kategori: