Сортировка двумерного массива по нулевому столбцу Public Function CoolSort(SourceArr As Variant) As Variant ' сортировка двумерного массива по нулевому столбцу Dim Check As Boolean, iCount As Integer, jCount As Integer, nCount As Integer ReDim tmpArr(UBound(SourceArr, 2)) As Variant Do Until Check Check = True For iCount = LBound(SourceArr, 1) To UBound(SourceArr, 1) - 1 If Val(SourceArr(iCount, 0)) > Val(SourceArr(iCount + 1, 0)) Then For jCount = LBound(SourceArr, 2) To UBound(SourceArr, 2) tmpArr(jCount) = SourceArr(iCount, jCount) SourceArr(iCount, jCount) = SourceArr(iCount + 1, jCount) SourceArr(iCount + 1, jCount) = tmpArr(jCount) Check = False Next End If Next Loop CoolSort = SourceArr End Function Та же функция, только с возможностью выбора столбца для сортировки двумерного массива: Function CoolSort(SourceArr As Variant, ByVal N As Integer) As Variant ' сортировка двумерного массива по столбцу N If N > UBound(SourceArr, 2) Or N < LBound(SourceArr, 2) Then _ MsgBox "Нет такого столбца в массиве!", vbCritical: Exit Function Dim Check As Boolean, iCount As Integer, jCount As Integer, nCount As Integer ReDim tmpArr(UBound(SourceArr, 2)) As Variant Do Until Check Check = True For iCount = LBound(SourceArr, 1) To UBound(SourceArr, 1) - 1 If Val(SourceArr(iCount, N)) > Val(SourceArr(iCount + 1, N)) Then For jCount = LBound(SourceArr, 2) To UBound(SourceArr, 2) tmpArr(jCount) = SourceArr(iCount, jCount) SourceArr(iCount, jCount) = SourceArr(iCount + 1, jCount) SourceArr(iCount + 1, jCount) = tmpArr(jCount) Check = False Next End If Next Loop CoolSort = SourceArr End Function
|
|||

Комментарии
да эт понятно. у меня это всё равно потом пересекается. а метод Sort мне не понравился. мягко говоря.
за сайт спасибо.
Степан, этот макрос предназначен для сортировки МАССИВА, а не ДИАПАЗОНА ЯЧЕЕК.
Чтобы отсортировать диапазон ячеек - достаточно макроса из одной строки
(метод Sort объекта Range)
Полезный макрос. Спасибо. Жаль только, что формулы все херит.
Можно сортировать и как текст.
Для этого замените строку
на
Жаль, что сортирует только числовые данные, а работает быстро :)
Спасибо Вам огромнейшее! :)
Добавил в текст статьи вариант функции с изменяемым номером столбца для сортировки
Здравствуйте. А возможно применить сортировку массива по 2-му, третьему столбцу? Какой параметр следует изменить? Спасибо.
Отправить комментарий