Что такое массив 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) из двух разных листов, и выполнять вычисления между элементами каждого массива.
Приложения ограничены только вашей фантазией.
Related posts
Как удалить пустые строки в Excel
Как использовать функцию «Говорить ячейки» в Excel
Как вставить лист Excel в документ Word
Как использовать анализ «что, если» в Excel
Как исправить строку в Excel
Быстрое написание чисел в Word и Excel
Как рассчитать Z-показатель в Excel
Как объединить данные в нескольких файлах Excel
Почему вы должны использовать именованные диапазоны в Excel
Как сделать круговую диаграмму в Excel
Как сортировать по дате в Excel
Используйте имена динамических диапазонов в Excel для гибких раскрывающихся списков
Как написать формулу/оператор ЕСЛИ в Excel
10 советов и рекомендаций по Excel на 2019 год
4 способа конвертировать Excel в Google Таблицы
Как исправить ошибки #N/A в формулах Excel, таких как ВПР
Как отследить зависимых в Excel
Как объединить ячейки, столбцы и строки в Excel
Базовая сортировка данных в один столбец и несколько столбцов в электронных таблицах Excel
Как поделиться файлом Excel для удобной совместной работы