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

Вход

Регистрация

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

 

= Мир MS Excel/Сортировка диапазона дат - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сортировка диапазона дат (Макросы/Sub)
Сортировка диапазона дат
RusLes Дата: Понедельник, 09.04.2018, 16:34 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Доброго времени суток. Ситуация следующая:
Есть таблица со сроками годности товара, хочу сделать что бы при нажатии кнопки производилась сортировка от более старых к более новым в диапазоне одной строки. И такое действие должно происходить в каждой из строчек, сейчас их у меня 158. Но в дальнейшем это число строк может меняться как в большую так и меньшую сторону. При записи макраса для одной строки все гуд, но к остальным строчкам не работает. Пробовал адаптировать вариант из темы.

[vba]
Код
ActiveWorkbook.Worksheets("TDSheet").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("TDSheet").Sort.SortFields.Add Key:=Range("F7:AD7") _
        , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("TDSheet").Sort
        .SetRange Range("F7:AD7")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
[/vba]

Диапазон AD7 уходит до 158.
В одной строке может быть до 25 значений


Сообщение отредактировал RusLes - Понедельник, 09.04.2018, 16:37
 
Ответить
СообщениеДоброго времени суток. Ситуация следующая:
Есть таблица со сроками годности товара, хочу сделать что бы при нажатии кнопки производилась сортировка от более старых к более новым в диапазоне одной строки. И такое действие должно происходить в каждой из строчек, сейчас их у меня 158. Но в дальнейшем это число строк может меняться как в большую так и меньшую сторону. При записи макраса для одной строки все гуд, но к остальным строчкам не работает. Пробовал адаптировать вариант из темы.

[vba]
Код
ActiveWorkbook.Worksheets("TDSheet").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("TDSheet").Sort.SortFields.Add Key:=Range("F7:AD7") _
        , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("TDSheet").Sort
        .SetRange Range("F7:AD7")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
[/vba]

Диапазон AD7 уходит до 158.
В одной строке может быть до 25 значений

Автор - RusLes
Дата добавления - 09.04.2018 в 16:34
Karataev Дата: Понедельник, 09.04.2018, 21:40 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
Макрос ищет последнюю строку с данными по столбцу "A". Затем макрос двигается от второй строки до последней. Предполагается, что первая строка шапка таблицы.


Сообщение отредактировал Karataev - Вторник, 10.04.2018, 09:02
 
Ответить
СообщениеМакрос ищет последнюю строку с данными по столбцу "A". Затем макрос двигается от второй строки до последней. Предполагается, что первая строка шапка таблицы.

Автор - Karataev
Дата добавления - 09.04.2018 в 21:40
RAN Дата: Понедельник, 09.04.2018, 22:06 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Тыкнул в ссылку, а там, оказывается, мой макрос...
[vba]
Код
Sub мяу()
    Dim r As Range, i&
    With ActiveWorkbook.Worksheets(1)
        For i = 7 To .Cells(.Rows.Count, "F").End(xlUp).Row
            Set r = .Range("F" & i).Resize(, 25)
              With .Sort
                .SortFields.Clear
                .SortFields.Add Key:=r(1) _
                    , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
                    xlSortNormal
                .SetRange r
                .Header = xlGuess
                .MatchCase = False
                .Orientation = xlLeftToRight
                .SortMethod = xlPinYin
                .Apply
            End With
        Next
    End With
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Понедельник, 09.04.2018, 22:06
 
Ответить
СообщениеТыкнул в ссылку, а там, оказывается, мой макрос...
[vba]
Код
Sub мяу()
    Dim r As Range, i&
    With ActiveWorkbook.Worksheets(1)
        For i = 7 To .Cells(.Rows.Count, "F").End(xlUp).Row
            Set r = .Range("F" & i).Resize(, 25)
              With .Sort
                .SortFields.Clear
                .SortFields.Add Key:=r(1) _
                    , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
                    xlSortNormal
                .SetRange r
                .Header = xlGuess
                .MatchCase = False
                .Orientation = xlLeftToRight
                .SortMethod = xlPinYin
                .Apply
            End With
        Next
    End With
End Sub
[/vba]

Автор - RAN
Дата добавления - 09.04.2018 в 22:06
RusLes Дата: Вторник, 10.04.2018, 08:59 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Karataev Спасибо! Все работает хорошо и очень быстро. Только сортировка происходит от более свежей даты, а хотелось бы что бы наименьшая дата была слева и вправо шли более свежие даты.
 
Ответить
СообщениеKarataev Спасибо! Все работает хорошо и очень быстро. Только сортировка происходит от более свежей даты, а хотелось бы что бы наименьшая дата была слева и вправо шли более свежие даты.

Автор - RusLes
Дата добавления - 10.04.2018 в 08:59
Karataev Дата: Вторник, 10.04.2018, 09:03 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
Исправил макрос в посте 3.
 
Ответить
СообщениеИсправил макрос в посте 3.

Автор - Karataev
Дата добавления - 10.04.2018 в 09:03
RusLes Дата: Вторник, 10.04.2018, 15:06 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Большое спасибо, все работает как надо)))))
 
Ответить
СообщениеБольшое спасибо, все работает как надо)))))

Автор - RusLes
Дата добавления - 10.04.2018 в 15:06
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сортировка диапазона дат (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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