Vad är en VBA-array i Excel och hur man programmerar en

VBA har varit en del av Microsoft Office -paketet i många år. Även om den inte har den fulla funktionaliteten och kraften hos en komplett VB-applikation, ger VBA Office -användare flexibiliteten att integrera Office- produkter och automatisera arbetet du gör i dem.

Ett av de mest kraftfulla verktygen som finns i VBA är möjligheten att ladda en hel rad data till en enda variabel som kallas en array. Genom att ladda data på det här sättet kan du manipulera eller utföra beräkningar på det dataintervallet på en mängd olika sätt.

Så vad är en VBA- array? I den här artikeln kommer vi att svara på den frågan och visa dig hur du använder en i ditt eget VBA-skript(your own VBA script) .

Vad är en VBA-array?

Att använda en VBA- matris i Excel är väldigt enkelt, men att förstå konceptet med matriser kan vara lite komplicerat om du aldrig har använt en.

Tänk(Think) på en array som en låda med sektioner inuti. En endimensionell array är en ruta med en rad sektioner. En tvådimensionell array är en låda med två sektionslinjer.

Du kan lägga in data i varje sektion av denna "låda" i vilken ordning du vill.

I början av ditt VBA- skript måste du definiera denna "box" genom att definiera din VBA- array. Så för att skapa en array som kan innehålla en uppsättning data (en endimensionell array), skulle du skriva följande rad.

Dim arrMyArray(1 To 6) As String

Senare i ditt program kan du placera data i valfri sektion av denna array genom att referera till sektionen inom parentes.

arrMyArray(1) = "Ryan Dube"

Du kan skapa en tvådimensionell array med hjälp av följande rad.

Dim arrMyArray(1 To 6,1 to 2) As Integer

Den första siffran representerar raden och den andra är kolumnen. Så ovanstående array kan innehålla ett intervall med 6 rader och 2 kolumner.

Du kan ladda alla element i denna array med data enligt följande.

arrMyArray(1,2) = 3

Detta kommer att ladda en 3:a i cellen B1.

En array kan innehålla vilken typ av data som helst som en vanlig variabel, såsom strängar, boolean, heltal, flytande och mer.

Siffran inom parentes kan också vara en variabel. Programmerare använder vanligtvis en For Loop för att räkna genom alla sektioner av en array och ladda dataceller i kalkylarket till arrayen. Du kommer att se hur du gör detta senare i den här artikeln.

Hur man programmerar en VBA-array i Excel

Låt oss ta en titt på ett enkelt program där du kanske vill ladda information från ett kalkylblad till en flerdimensionell array.

Som ett exempel, låt oss titta på ett kalkylblad för produktförsäljning, där du vill ta ut säljarens namn, artikel och totala försäljning från kalkylarket.

Observera att i VBA när du refererar till rader eller kolumner, räknar du rader och kolumner(rows and columns) med början från det övre vänstra vid 1. Så repkolumnen är 3, artikelkolumnen är 4 och den totala kolumnen är 7.

För att ladda dessa tre kolumner över alla 11 rader, måste du skriva följande skript.

Dim arrMyArray(1 To 11, 1 To 3) As String
Dim i As Integer, j As Integer
For i = 2 To 12
For j = 1 To 3
arrMyArray(i-1, j) = Cells(i, j).Value
Next j
Next i

Du kommer att märka att för att hoppa över rubrikraden måste radnumret i den första For-looken börja på 2 istället för 1. Det betyder att du måste subtrahera 1 för arrayradvärdet när du laddar cellvärdet in i arrayen med hjälp av Celler(Cells) (i, j). Värde.

Var du ska infoga ditt VBA Array Script(Your VBA Array Script)

För att placera ett VBA- skript i Excel måste du använda VBA- redigeraren. Du kan komma åt detta genom att välja menyn Utvecklare(Developer) och välja Visa kod(View Code) i avsnittet Kontroller(Controls) på menyfliksområdet.

Om du inte ser utvecklaren(Developer) i menyn måste du lägga till den. För att göra detta, välj Arkiv(File) och alternativ(Options) för att öppna fönstret Excel-alternativ.

Ändra välj kommandon från rullgardinsmenyn till Alla kommandon(All Commands) . Välj Utvecklare(Developer) från menyn till vänster och välj knappen Lägg(Add) till för att flytta den till rutan till höger. Markera kryssrutan för att aktivera den och välj OK för att avsluta.

När kodredigerarens(Code Editor) fönster öppnas, se till att arket som dina data finns i är markerat i den vänstra rutan. Välj Arbetsblad(Worksheet) i den vänstra rullgardinsmenyn och Aktivera(Activate) till höger. Detta kommer att skapa en ny subrutin som heter Worksheet_Activate ().

Denna funktion kommer att köras när kalkylarksfilen öppnas. Klistra in koden i skriptrutan i denna subrutin.

Det här skriptet kommer att fungera genom de 12 raderna och laddar repnamnet från kolumn 3, artikeln från kolumn 4 och den totala försäljningen från kolumn 7.

När båda For-slingorna är klara innehåller den tvådimensionella arrayen arrMyArray all data du angav från originalarket.

Manipulera matriser i Excel VBA

Låt oss säga att du vill tillämpa en moms på 5 % på alla slutliga försäljningspriser och sedan skriva all information till ett nytt blad.

Du kan göra detta genom att lägga till en annan For-loop efter den första, med ett kommando för att skriva resultaten till ett nytt ark.

For k = 2 To 12
Sheets("Sheet2").Cells(k, 1).Value = arrMyArray(k - 1, 1)
Sheets("Sheet2").Cells(k, 2).Value = arrMyArray(k - 1, 2)
Sheets("Sheet2").Cells(k, 3).Value = arrMyArray(k - 1, 3)
Sheets("Sheet2").Cells(k, 4).Value = arrMyArray(k - 1, 3) * 0.05
Next k

Detta kommer att "avlasta" hela arrayen i Sheet2 , med en extra rad som innehåller summan multiplicerat med 5 % för skattebeloppet.

Det resulterande arket kommer att se ut så här.

Som du kan se är VBA- matriser i Excel extremt användbara och lika mångsidiga som alla andra Excel-trick(any other Excel trick)

Exemplet ovan är en mycket enkel användning för en array. Du kan skapa mycket större arrayer och utföra sortering, medelvärdesberäkning eller många andra funktioner mot data du lagrar i dem.

Om du vill bli riktigt kreativ kan du till och med skapa två arrayer som innehåller en rad celler(containing a range of cells) från två olika ark och utföra beräkningar mellan elementen i varje array.

Ansökningarna begränsas endast av din fantasi.



About the author

"Jag är en frilansande Windows- och Office-expert. Jag har över 10 års erfarenhet av att arbeta med dessa verktyg och kan hjälpa dig att få ut det mesta av dem. Mina färdigheter inkluderar: arbeta med Microsoft Word, Excel, PowerPoint och Outlook; skapa webben sidor och applikationer; och hjälpa kunder att nå sina affärsmål."



Related posts