Найти в Дзене
VBA Excel с нуля

VBA Excel № 130. Сортировка массива на рабочем листе.

Оглавление
Скриншот с моего ноутбука
Скриншот с моего ноутбука

Хотя в Excel есть встроенная команда для сортировки ячеек, в VBA нет прямого метода сортировки массивов. Один из способов решения этой задачи - перенести массив на рабочий лист, отсортировать данные в Excel и вернуть отсортированный массив обратно. Однако, если важна скорость выполнения операции, лучше написать процедуру сортировки на VBA.

Есть несколько методов сортировки:

  1. Сортировка на рабочем листе: массив переносится на лист Excel, сортируется и возвращается в массив.
  2. Пузырьковый метод: простой, но не самый эффективный способ сортировки.
  3. Быстрая сортировка: более быстрый алгоритм, но требует времени для освоения.
  4. Метод пересчета: работает быстро, но требует усилий для оптимизации.

Рассмотрим сортировку на рабочем листе. Она довольно быстрая, учитывая все перемещения данных.

Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука

📌Скачать файл пример с макросом можно в конце статьи

Сортировка на рабочем листе кстати, дала на удивление быстрые результаты. Я взял 1 миллион элементов, сортировка которых произошла за чуть более 8 секунд. Массив переместился на лист, где произошла сортировка, после чего отсортированные данные вернулись обратно в массив.

А вот утилита состоит из двух макросов:

Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука

Давайте коротко разберемся.

  1. Sub СортровкаНаРабочемЛисте(): Это основная процедура, которая запускается при выполнении скрипта. Сначала она запрашивает у пользователя количество элементов для сортировки. Затем она создает массив заданного размера, заполняет его случайными числами и вызывает процедуру сортировки на рабочем листе (второй макрос). После сортировки она выводит сообщение с временем, затраченным на сортировку.
  2. Sub СортировкаЛиста(list): Эта процедура отвечает за сортировку массива, переданного ей в качестве аргумента. Она начинается с определения первого и последнего элементов массива, а также установки переменных для первой и последней ячеек на листе Excel. Затем она копирует массив на лист, сортирует его при помощи встроенной функции сортировки Excel и копирует отсортированные значения обратно в массив. В конце она возвращает управление основной процедуре.

Этот подход позволил использовать встроенные функции сортировки Excel, обеспечил высокую скорость выполнения операции сортировки.

В следующих статьях рассмотрим другие виды сортировок

СКАЧАТЬ ФАЙЛ ПРИМЕР