В эксель работа с массивами - Учим Эксель

VBA-Урок 13. 1. Внедрение массивов (Arrays)

VBA-Урок 13.1. Внедрение массивов (Arrays)

Массив — это на самом деле переменная, которая может хранить много значений. Мы уже разглядывали это в VBA-Урок 6.1. Типы данных , но давайте на данный момент окунемся еще поглубже .

Почему употребляются массивы?

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

2-ая причина, чтоб употреблять массивы — это их скорость. Занимает существенно меньше времени на считывание данных из массивов, чем из таблиц (сделанных из ячеек) на рабочем листе Excel.

Итак, тут есть пример, который покажет это нагдяно.

На первом рабочем листе («DS») есть набор данных: 5000 строк на 3 столбца:

На втором листе вы отыщите итоговую таблицу, которая учитывает все ответы «Да» («YES») в разрезе лет и клиентов:

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

Без использования массивов, это бы заняло Excel 131.44 секунды , чтоб выполнить эту функцию:

Но для первого сохранения данных (с рабочего листа «DS») в массив и потом, воплощение таковых же расчетов (используя массивы заместо набора данных с рабочего листа «DS»), займет только 1.74 секунды :

Если мы решим улучшить нашу функцию, сохраняя в массиве лишь данные, содержащие ответы «YES» (которых приблизительно 3/4 от всех данных), то это бы заняло только 1.02 секунды :

Интересно почитать:  Сравнить документы excel

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

Мы вернемся к деталям нашего примера в конце урока.

Декларирование массивов

Ниже есть несколько примеров декларирования массивов (если 1-ые два не ясны для вас, перечитайте это ):

Если вы не имеете способности ввести фиксированные значения при декларировании массивов (потому что они зависят от, к примеру, размера набора данных), оставьте скобки пустыми.

Вы не должны декларировать тип данных (string, long и т.д.), хотя в почти всех вариантах это будет замедлять выполнение вашей процедуры .

Хранение данных в массиве

Давайте попробуем сохранить некие данные в массиве:

Мы желаем сохранить 11х1 значений в этом случае, потому нам нужно сделать одномерный массив:

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

Любой элемент в массиве на данный момент получит свое значение:

Вы сможете работать либо поменять любой элемент массива, как будто это бы была бы рядовая переменная.

Дальше пример, в каком мы используем array_example (8):

Цикл For был бы наилучшим вариантом, чтоб сохранить массив резвее:

Ссылка на основную публикацию
Adblock
detector