Т. е., например, массив данных DataArray(N, M).
Массив полей сортировки по порядку SortArray(K), т.е. если сортировать надо сначала по столбцу 1, затем по 3, потом по 6, потом по 2, то SortArray – массив из чисел 1,3,6,2.
Подразумевается. что Option Compare не важно. Сортировка по возрастанию, хотя можно добавить массив, где указано, какой столбец надо сортировать, по возрастанию, а какой – по убыванию. Сортировать надо весь массив, т.е. с 1-й по последнюю строки, но в общем случае – со строки n1 по строку n2.
Т. е. нужен процедура сортировки, которая бы запускалась в коде макроса примерно так:
Код: Выделить всё
SortMacro DataArray, SortArray, n1, n2
Алгоритм сортировки тоже не важен, но лучше тот, которым сортируется область на листе. Т.е. если сортировать не надо, то и порядок расположения не меняется. Всякие алгоритмы быстрой сортировки (типа Шелла) часто меняют местами то строки, у которых одинаковые данные по полю сортировки.
Бросить данный массив, на лист, отсортировать, а затем обратно в массив – не пойдёт по многим причинам.
По интернету находил алгоритмы сортировки с кодами, но только для одномерных массивов. Сам пытался что-то сделать, но всё получается как-то коряво. Может, у кого-то есть готовый код?