Ce este un VBA Array în Excel și cum să programați unul


VBA face parte din suita Microsoft Office de mulți ani. Deși nu are funcționalitatea și puterea completă a unei aplicații VB complete, VBA oferă utilizatorilor Office flexibilitatea de a integra produsele Office și de a automatiza munca pe care o efectuați în ele.

Unul dintre cele mai puternice instrumente disponibil în VBA este posibilitatea de a încărca o gamă întreagă de date într-o singură variabilă numită tablou. Încărcând date în acest fel, puteți manipula sau efectua calcule pe acea gamă de date într-o varietate de moduri. large ">

Deci, ce este un tablou VBA? În acest articol, vom răspunde la această întrebare și vă vom arăta cum să folosiți una din propriul script VBA.

Ce este un VBA Array?

Utilizarea unui VBA matricea în Excel este foarte simplă, dar înțelegerea conceptului de tablouri poate fi puțin complexă dacă nu ați folosit niciodată unul.

Gândiți-vă la un tablou ca o casetă cu secțiuni în interiorul acesteia. Un tablou unidimensional este o casetă cu o linie de secțiuni. Un tablou bidimensional este o casetă cu două linii de secțiuni.

Puteți introduce date în fiecare secțiune a acestei „cutii” în orice ordine doriți.

In_content_1 all: [300x250] / DFP: [640x360]->

La începutul scriptului VBA, trebuie să definiți această „casetă” prin definirea tabloului VBA. Așadar, pentru a crea un tablou care poate reține un set de date (un tablou cu o singură dimensiune), ar trebui să scrieți următoarea linie.

Dim arrMyArray(1 To 6) As String

Mai târziu în program, puteți să plasați date din orice secțiune a acestui tablou, făcând referință la secțiunea din paranteze.

arrMyArray(1) = "Ryan Dube"

Puteți crea un tablou bidimensional folosind următoarea linie.

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

Primul număr reprezintă rândul, iar al doilea este coloana. Așadar, tabloul de mai sus ar putea reține o gamă cu 6 rânduri și 2 coloane.

Puteți încărca orice element al acestui tablou cu date după cum urmează.

arrMyArray(1,2) = 3

Aceasta va încărca un 3 în celula B1.

Un tablou poate reține orice tip de date ca o variabilă obișnuită, cum ar fi șiruri, booleane, întregi, plutitoare și multe altele.

numărul din paranteza poate fi de asemenea o variabilă. Programatorii folosesc în mod obișnuit un cont pentru Loop pentru a număra toate secțiunile unui tablou și încărca celulele de date din foaia de calcul în tablou. Veți vedea cum să faceți acest lucru mai târziu în acest articol.

Cum să programați o matrice VBA în Excel

Haideți să aruncăm o privire la un program simplu în care este posibil să doriți să încărcați informații. dintr-o foaie de calcul într-un tablou multidimensional.

Ca un exemplu, să ne uităm la o foaie de calcul de vânzări de produse, unde doriți să extrageți numele, elementul și vânzarea totală a vânzătorului din foaia de calcul.

>

Rețineți că în VBA când faceți referință la rânduri sau coloane, numărați rânduri și coloane începând din partea stângă sus de la 1. Deci coloana de reprezentare este 3, coloana elementului este 4, iar coloana totală este 7.

Pentru a încărca aceste trei coloane pe toate cele 11 rânduri, va trebui să scrieți următorul script.

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

Veți observa că pentru a sări peste rândul antetului, numărul rândului din primul aspect Pentru că trebuie să înceapă de la 2, mai degrabă decât 1. Acest lucru înseamnă că trebuie să scutiți 1 pentru valoarea rândului de matrice atunci când încărcați valoarea celulelor în tablou folosind Cells (i, j) .Value.

Unde să inserați scriptul VRA Array

Pentru a plasa un program VBA în Excel, trebuie să utilizați Editor VBA. Puteți accesa acest lucru selectând meniul Dezvoltatorși selectând Vizualizare codîn secțiunea Controluri a panglicii.

Dacă nu vedeți dezvoltatorul în meniu, va trebui să adaugă-l. Pentru a face acest lucru, selectați Fișierși Opțiunipentru a deschide fereastra Opțiuni Excel.

Modificați comenzile de alegere din meniul vertical în Toate comenzile. Selectați Dezvoltatordin meniul din stânga și selectați butonul Adăugarepentru a-l muta în panoul din dreapta. Selectați caseta de selectare pentru a o activa și selectați OKpentru a termina.

Când se deschide fereastra Editor de coduri, asigurați-vă că foaia în care se află datele dvs. este selectată în panoul din stânga. Selectați Foaie de lucrudin stânga și Activațiîn partea dreaptă. Aceasta va crea o nouă subrutină numită Worksheet_Activate ().

Această funcție va rula de fiecare dată când fișierul foii de calcul este deschis. Lipiți codul în panoul de script din interiorul acestei subrutine.

Acest script va funcționa prin cele 12 rânduri și va încărca numele de reprezentare din coloana 3, elementul din coloana 4 și vânzarea totală din coloana 7.

Odată ce ambele bucle sunt terminate, tabloul bidimensional arrMyArray conține toate datele pe care le-ați specificat din foaia inițială. , apoi scrieți toate datele într-o nouă foaie.

Puteți face acest lucru adăugând o altă buclă For după prima, cu o comandă pentru a scrie rezultatele într-o nouă foaie.

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

Aceasta va „descărca” întregul tablou în Sheet2, cu un rând suplimentar care conține totalul înmulțit cu 5% pentru valoarea impozitului.

foaia rezultată va arăta astfel.

După cum puteți vedea, tablourile VBA în Excel sunt extrem de utile și la fel de versatile ca orice alt truc Excel.

Exemplul de mai sus este o utilizare foarte simplă pentru un tablou. Puteți crea tablouri mult mai mari și puteți efectua sortarea, medierea sau multe alte funcții pe baza datelor pe care le stocați.

Dacă doriți să obțineți o creație reală, puteți crea chiar două tablouri conținând o gamă de celule din două foi diferite și efectuați calcule între elementele fiecărui tablou.

Aplicațiile sunt limitate numai de imaginația dvs.

Postări asemănatoare:


18.01.2020