Что такое массив VBA в Excel и как его запрограммировать

VBA уже много лет является частью пакета Microsoft Office . Хотя он не обладает полной функциональностью и мощью полноценного приложения VB, VBA предоставляет пользователям Office гибкость для интеграции продуктов Office и автоматизации работы, которую вы в них выполняете.

Одним из самых мощных инструментов, доступных в VBA , является возможность загрузки всего диапазона данных в одну переменную, называемую массивом. Загружая данные таким образом, вы можете манипулировать этим диапазоном данных или выполнять вычисления различными способами.

Так что же такое массив VBA ? В этой статье мы ответим на этот вопрос и покажем вам, как использовать его в вашем собственном скрипте VBA(your own VBA script) .

Что такое массив VBA?

Использовать массив 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.

Массив может содержать любой тип данных в виде обычной переменной, например строки, логические значения, целые числа, числа с плавающей запятой и многое другое.

Число в скобках также может быть переменной. Программисты обычно используют цикл(Loop) For для подсчета всех разделов массива и загрузки ячеек данных электронной таблицы в массив. Позже в этой статье вы увидите, как это сделать.

Как запрограммировать массив 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 должен начинаться с 2, а не с 1. Это означает, что вам нужно вычесть 1 из значения строки массива при загрузке значения ячейки. в массив с помощью Cells (i, j).Value.

Куда вставить скрипт массива VBA(Your VBA Array Script)

Чтобы поместить программный скрипт VBA в (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 в (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