Страницы: 1
RSS
Макрос: сортировка по 3 столбцам, Макрос: сортировка по 3 столбцам
 
Помогите, пожалуйста, с написанием макроса, к сожалению, приложить файл не могу. На данный момент перепробовала много вариантов, но по итогу столбец V не сортируется.

ТЗ:
Сортировка по столбцу D от А до Я, затем по столбцу U от А до Я, затем по столбцу V от А до Я

Столбец V у меня уже в формате "дата"

Если делаю вручную - все отлично, но макросы не работают, буду очень благодарна, если кто поможет с решением
 
Цитата
smel777 написал:
но макросы не работают
какие? Вы пробовали записать макрос пользовательской сортировки, которая на скрине показана? Если да - где он?
Вы по картинке предлагаете найти ошибку?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Код
Sub SortD_U_V()

    Dim ws As Worksheet
    Dim lastRow As Long
    
    Set ws = ActiveSheet
    
    ' Последняя строка по столбцу A
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' Очищаем старые сортировки
    ws.Sort.SortFields.Clear
    
    ' Добавляем уровни сортировки
    ws.Sort.SortFields.Add Key:=ws.Range("D29:D" & lastRow), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    
    ws.Sort.SortFields.Add Key:=ws.Range("U29:U" & lastRow), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    
    ws.Sort.SortFields.Add Key:=ws.Range("V29:V" & lastRow), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    
    ' Применяем сортировку
    With ws.Sort
        .SetRange ws.Range("A28:V" & lastRow) ' диапазон включая заголовки
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .Apply
    End With

End Sub
Изменено: smel777 - 11.03.2026 21:05:16
 
Цитата
smel777 написал: Столбец V у меня уже в формате "дата"
Возможно тут не 'дата' а текст. Без файла трудно что-то определенное сказать
Преобразование чисел-как-текст в нормальные числа
Согласие есть продукт при полном непротивлении сторон
 
Код
'Сортировка по трем столбцам
    Dim ws As Worksheet
    Set ws = Worksheets("Реестр счетов-фактур")
    ' Ускорение работы
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    ' Последняя строка
    lastRow = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row
    ' Формат столбца V (Март 2012)
    ws.Columns("V").NumberFormat = "[$-419]MMMM YYYY"
    ' Очистить старую сортировку
    ws.Sort.SortFields.Clear
    ' Условия сортировки
    ws.Sort.SortFields.Add2 Key:=ws.Range("D29:D" & lastRow), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ws.Sort.SortFields.Add2 Key:=ws.Range("U29:U" & lastRow), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ws.Sort.SortFields.Add2 Key:=ws.Range("V29:V" & lastRow), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
    ' Применить сортировку
    With ws.Sort
        .SetRange ws.Range("A28:AZ" & lastRow)
        .Header = xlYes
        .Orientation = xlTopToBottom
        .Apply
    End With
    ' Вернуть настройки Excel
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
Помощь не требуется, разобралась сама  
Страницы: 1
Читают тему
Наверх