Быстрая сортировка VBA по столбцам (по горизонтали) - PullRequest
1 голос
/ 24 сентября 2019

Я пытаюсь отсортировать по столбцам двумерный массив, содержащий N строк * 15 столбцов.Я видел алгоритм быстрой сортировки, но он работает только для сортировки строк (по вертикали).Что мне нужно, так это сортировка по столбцам.Кто-нибудь помогает мне получить это?Вот моя попытка

Public Arr As Variant
Public Sub QuickSortHorizontally()
Dim i As Integer, j As Integer, k As Integer

Dim LbdArr As Integer, UbdArr As Integer, Pvt As Integer
LbdArr = 1
UbdArr = 15

For i = LBound(Mtz, 1) To UBound(arr, 1)
    For j = LBound(arr, 2) - 1 To UBound(arr, 2) - 1
        For k = LBound(arr, 2) To UBound(arr, 2)                
            Pvt = arr(i, UBound(arr, 2))
            If arr(i, k) <= Pvt Then
                arr(i, k) = arr(k, i)
            End If
            Debug.Print arr(i, k) 'Just to see if it works
        Next k
    Next j
Next i
End Sub    

1 Ответ

0 голосов
/ 24 сентября 2019

Я не знаю, действительно ли я понимаю, что вы хотите, но попробуйте это:

Sub SortAllCols()
Dim ws As Worksheet
Dim cols, rows As Long

Set ws = ActiveSheet
cols = ws.UsedRange.Columns.Count
rows = ws.UsedRange.Rows.Count

For i = 1 To rows
    ws.Range(Cells(i, 1), Cells(i, cols)).Select
    ws.Sort.SortFields.Clear
    ws.Sort.SortFields.Add Key:=Range(Cells(i, 1), Cells(i, cols)), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ws.Sort
        .SetRange Range(Cells(i, 1), Cells(i, cols))
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With

Next i

End Sub
...