Страницы: 1
RSS
Одновременная повторная сортировка нескольких таблиц на одном листе
 
Здравствуйте!

На 1 листе имею 6 умных таблиц, которые часто обновляются.

Как одним щелчком автоматически обновить все сортировки, чтоб не тикать поочерёдно каждую таблицу?
(функцию Сорт не рассматриваю)

Возможно есть такая кнопка в какой-нибудь надстройке (Plex, Kutools и т.д.)?
 
посортируйте вручную
перед началом включите макрорекордер
(не забудьте выключить запись макроса)
пользуйтесь макросом для сортировки всех таблиц
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Aleksandr Dorchynets,  не растягивайте сообщение - не пишите через строку.
 
Здравствуйте. Макрорекордер и небольшая доработка кода.
Код
Sub SortSmartTables()
    Dim listObj As ListObject
    Application.ScreenUpdating = False
    For Each listObj In ActiveSheet.ListObjects
        With listObj.Sort
            .SortFields.Add Key:=Range(listObj.DataBodyRange(1, 1).Address(0, 0)), _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    Next listObj
End Sub
Изменено: DANIKOLA - 22.05.2022 20:02:55
 
Спасибо всем большое!
Если есть новые варианты реализации, то отправляйте – всегда интересно изучить.
 
Цитата
Aleksandr Dorchynets написал:
Если есть новые варианты реализации, то отправляйте
Если бы Вы озаботились файлом с примером, то вариантов было бы больше
 
Цитата
написал:
Если бы Вы озаботились файлом с примером, то вариантов было бы больше
Все 6 таблиц имеют одинаковую сортировку: (Screenshot 1)
• сортировка по красному цвету снизу
• сортировка значений по убиванию
1 Вариант реализации
Если включить запись макроса и сделать следующие:
просортировать каждую таблицу, свернуть сгруппированные ячейки – то при воспроизведении макроса свёртывание сгруппированных ячеек не выполняется. (Screenshot 2)
2 Вариант от DANIKOLA
Он хорош тем, что макрос воспроизводиться быстро и свёртывание сохраняется, но есть 1 недочет:
При каждой повторной сортировке создаются дубликаты (Screenshot 3), которые при повторном открытии файла приводят к этой ошибке: (Screenshot 4)

Я уже использую 1 вариант, но если у кого-то есть и получше, то буду рад их изучить.
Изменено: Aleksandr Dorchynets - 25.05.2022 15:29:00
 
)
Код
Sub SortIG0()
  Dim t As ListObject
  Application.ScreenUpdating = False
  For Each t In ActiveSheet.ListObjects
    With t.Sort
      .Header = xlYes: .MatchCase = False
      .Orientation = xlTopToBottom: .SortMethod = xlPinYin: .Apply
    End With
  Next
  Application.ScreenUpdating = True
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Спасибо Игорь за ваш вариант, но все 6 таблиц всегда находиться в свернутом состоянии (Screenshot 1) и при использовании макроса таблица сортируется на основе верхних 10 строк (нижние строки не анализируются)
Снизу приложил пример с вашем макросом.
Изменено: Aleksandr Dorchynets - 26.05.2022 14:11:07
 
хорошо, а что нужно сделать?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Нужно просортировать ВСЕ 1600 строк в каждой из таблиц и после этого отобразить их в свернутом виде.
Вариант 1 (см. файл примера) сортирует все 1600 строк, но после его запуска все таблицы остаются в развернутом виде.
Возможно ли дописать шаг в макрос, который все свернет? (P.S. Макрорекодер не помогает)
Изменено: Aleksandr Dorchynets - 26.05.2022 16:11:56
Страницы: 1
Наверх