Какво е VBA масив в Excel и как да го програмирам

VBA е част от пакета на Microsoft Office от много години. Въпреки че няма пълната функционалност и мощност на пълно VB приложение, VBA предоставя на потребителите на Office гъвкавостта да интегрират продуктите на Office и да автоматизират работата, която вършите в тях.

Един от най-мощните инструменти, налични във VBA , е възможността за зареждане на цял набор от данни в една променлива, наречена масив. Като зареждате данни по този начин, можете да манипулирате или извършвате изчисления върху този диапазон от данни по различни начини.

И така, какво е VBA масив? В тази статия ще отговорим на този въпрос и ще ви покажем как да използвате такъв във вашия собствен VBA скрипт(your own VBA script) .

Какво е VBA масив?

Използването на VBA масив в Excel е много просто, но разбирането на концепцията за масиви може да бъде малко сложно, ако никога не сте използвали такъв.

Представете(Think) си масив като кутия със секции вътре. Едномерният масив е кутия с един ред от секции. Двуизмерният масив е кутия с две линии от секции.

Можете да поставите данни във всяка секция на тази „кутия“ в произволен ред.

В началото на вашия VBA скрипт трябва да дефинирате тази „кутия“, като дефинирате своя VBA масив. Така че, за да създадете масив, който може да съдържа един набор от данни (едномерен масив), трябва да напишете следния ред.

Dim arrMyArray(1 To 6) As String

По-късно във вашата програма можете да поставите данни във всяка секция от този масив, като се позовавате на секцията вътре в скоби.

arrMyArray(1) = "Ryan Dube"

Можете да създадете двуизмерен масив, като използвате следния ред.

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

Първото число представлява реда, а второто е колоната. Така че горният масив може да съдържа диапазон с 6 реда и 2 колони.

Можете да заредите всеки елемент от този масив с данни, както следва.

arrMyArray(1,2) = 3

Това ще зареди 3 в клетка B1.

Масивът може да съдържа всякакъв тип данни като обикновена променлива, като низове, булеви, цели числа, плаващи числа и др.

Числото в скобите също може да бъде променлива. Програмистите обикновено използват For Loop , за да преброят всички секции на масива и да заредят клетки с данни в електронната таблица в масива. Ще видите как да направите това по-късно в тази статия.

Как да програмирам VBA масив в Excel

Нека да разгледаме една проста програма, в която може да искате да заредите информация от електронна таблица в многоизмерен масив.

Като пример, нека разгледаме електронна таблица за продажби на продукти, където искате да извадите името, артикула и общата продажба на търговския представител от електронната таблица.

Имайте предвид, че във VBA , когато препращате към редове или колони, вие броите редове и колони,(rows and columns) започвайки от горния ляв ъгъл от 1. Така че колоната за повторение е 3, колоната с артикули е 4, а общата колона е 7.

За да заредите тези три колони във всичките 11 реда, ще трябва да напишете следния скрипт.

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

Ще забележите, че за да пропуснете заглавния ред, номерът на реда в първия For look трябва да започне от 2, а не от 1. Това означава, че трябва да извадите 1 за стойността на реда на масива, когато зареждате стойността на клетката в масива с помощта на клетки(Cells) (i, j). Стойност.

Къде да вмъкнете вашия VBA масив скрипт(Your VBA Array Script)

За да поставите програма на VBA скрипт в Excel , трябва да използвате VBA редактора. Можете да получите достъп до това, като изберете менюто за разработчици и изберете (Developer)Преглед на код(View Code) в секцията Контроли(Controls) на лентата.

Ако не виждате разработчика(Developer) в менюто, ще трябва да го добавите. За да направите това, изберете Файл(File) и опции(Options) , за да отворите прозореца Опции на Excel.

Променете командите за избор от падащото меню на Всички команди(All Commands) . Изберете Разработчик(Developer) от лявото меню и изберете бутона Добавяне(Add) , за да го преместите в панела отдясно. Поставете отметка в квадратчето, за да го активирате, и изберете OK , за да завършите.

Когато се отвори прозорецът на редактора на кодове(Code Editor) , уверете се, че листът, в който се намират вашите данни, е избран в левия панел. Изберете Работен лист(Worksheet) в падащото меню вляво и Активиране(Activate) вдясно. Това ще създаде нова подпрограма, наречена Worksheet_Activate ().

Тази функция ще се изпълнява всеки път, когато се отвори файлът с електронна таблица. Поставете кода в прозореца на скрипта вътре в тази подпрограма.

Този скрипт ще работи през 12-те реда и ще зареди името на представителя от колона 3, артикула от колона 4 и общата продажба от колона 7.

След като и двата цикъла For приключат, двумерният масив arrMyArray съдържа всички данни, които сте посочили от оригиналния лист.

Манипулиране на масиви в Excel VBA

Да приемем, че искате да приложите данък върху продажбите от 5% към всички крайни продажни цени и след това да запишете всички данни в нов лист.

Можете да направите това, като добавите друг цикъл For след първия, с команда за запис на резултатите в нов лист.

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

Това ще „разтовари“ целия масив в Sheet2 , с допълнителен ред, съдържащ общата сума, умножена по 5% за сумата на данъка.

Полученият лист ще изглежда така.

Както можете да видите, VBA масивите в Excel са изключително полезни и гъвкави като всеки друг трик в Excel(any other Excel trick)

Примерът по-горе е много проста употреба за масив. Можете да създавате много по-големи масиви и да извършвате сортиране, усредняване или много други функции спрямо данните, които съхранявате в тях.

Ако искате да станете истински креативни, можете дори да създадете два масива , съдържащи диапазон от клетки(containing a range of cells) от два различни листа, и да извършите изчисления между елементите на всеки масив.

Приложенията са ограничени само от вашето въображение.



About the author

„Аз съм експерт по Windows и Office на свободна практика. Имам над 10 години опит в работата с тези инструменти и мога да ви помогна да извлечете максимума от тях. Моите умения включват: работа с Microsoft Word, Excel, PowerPoint и Outlook; създаване на уеб страници и приложения; и помагане на клиентите да постигнат своите бизнес цели."



Related posts