Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сортировка динамического диапазона по двум столбцам - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сортировка динамического диапазона по двум столбцам (Макросы/Sub)
Сортировка динамического диапазона по двум столбцам
Amator Дата: Четверг, 24.01.2019, 16:51 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 84
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте. Помогите , пожалуйста , с макросом для сортировки. Необходимо сортировать сначала по столбцу "В" (дата) , а потом по столбцу "F" (№) по возрастанию - как в примере . Строк на листе около 2000. Заранее спасибо.
К сообщению приложен файл: 5550008.xlsm(19.9 Kb)
 
Ответить
СообщениеЗдравствуйте. Помогите , пожалуйста , с макросом для сортировки. Необходимо сортировать сначала по столбцу "В" (дата) , а потом по столбцу "F" (№) по возрастанию - как в примере . Строк на листе около 2000. Заранее спасибо.

Автор - Amator
Дата добавления - 24.01.2019 в 16:51
_Boroda_ Дата: Четверг, 24.01.2019, 17:19 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 14125
Репутация: 5696 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
В примере столбец F по убыванию
Если таки по возрастанию, то так можно
[vba]
Код
Sub tt()
    Application.ScreenUpdating = 0
    Application.Calculation = 3
    r0_ = 4
    n_ = Cells(Rows.Count, 7).End(3).Row - r0_ + 1
    On Error Resume Next
    With Cells(r0_, 2).Resize(n_)
        .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
        .Value = .Value
    End With
    With Cells(r0_, 6).Resize(n_)
        .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
        .Value = .Value
    End With
    On Error GoTo 0
    With ActiveSheet.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Cells(r0_, 2).Resize(n_), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
        .SortFields.Add Key:=Cells(r0_, 6).Resize(n_), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add Key:=Cells(r0_, 7).Resize(n_), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Cells(r0_, 1).Resize(n_, 20)
        .Apply
    End With
    ar = Cells(r0_, 1).Resize(n_, 6)
    For i = 1 To n_
        If ar(i, 1) = "" Then
            ar(i, 2) = ""
            ar(i, 6) = ""
        End If
    Next i
    Cells(r0_, 1).Resize(n_, 6) = ar
    Application.Calculation = 1
    Application.ScreenUpdating = 1
End Sub
[/vba]
К сообщению приложен файл: 5550008_1.xlsm(29.8 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВ примере столбец F по убыванию
Если таки по возрастанию, то так можно
[vba]
Код
Sub tt()
    Application.ScreenUpdating = 0
    Application.Calculation = 3
    r0_ = 4
    n_ = Cells(Rows.Count, 7).End(3).Row - r0_ + 1
    On Error Resume Next
    With Cells(r0_, 2).Resize(n_)
        .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
        .Value = .Value
    End With
    With Cells(r0_, 6).Resize(n_)
        .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
        .Value = .Value
    End With
    On Error GoTo 0
    With ActiveSheet.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Cells(r0_, 2).Resize(n_), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
        .SortFields.Add Key:=Cells(r0_, 6).Resize(n_), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add Key:=Cells(r0_, 7).Resize(n_), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Cells(r0_, 1).Resize(n_, 20)
        .Apply
    End With
    ar = Cells(r0_, 1).Resize(n_, 6)
    For i = 1 To n_
        If ar(i, 1) = "" Then
            ar(i, 2) = ""
            ar(i, 6) = ""
        End If
    Next i
    Cells(r0_, 1).Resize(n_, 6) = ar
    Application.Calculation = 1
    Application.ScreenUpdating = 1
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 24.01.2019 в 17:19
Amator Дата: Четверг, 24.01.2019, 17:34 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 84
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
_Boroda_, большое спасибо ! Код работает замечательно.
 
Ответить
Сообщение_Boroda_, большое спасибо ! Код работает замечательно.

Автор - Amator
Дата добавления - 24.01.2019 в 17:34
Amator Дата: Пятница, 25.01.2019, 13:42 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 84
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
_Boroda_, Здравствуйте. Возникла проблема. На примере работает. В моем файле ругается.
К сообщению приложен файл: 9266932.png(106.3 Kb)
 
Ответить
Сообщение_Boroda_, Здравствуйте. Возникла проблема. На примере работает. В моем файле ругается.

Автор - Amator
Дата добавления - 25.01.2019 в 13:42
_Boroda_ Дата: Пятница, 25.01.2019, 13:47 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 14125
Репутация: 5696 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Сотрите самую первую строку "Опшн ..."


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеСотрите самую первую строку "Опшн ..."

Автор - _Boroda_
Дата добавления - 25.01.2019 в 13:47
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сортировка динамического диапазона по двум столбцам (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2019 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!