Как отсортировать несколько числовых столбцов за один раз

Как отсортировать несколько числовых столбцов за один раз

ввод, вывод

У меня 350 столбцов. Ниже представлено подмножество всех данных.

Пример данных в таблице Excel, разделенных на строки по годам и месяцам и столбцы по районам.

Я использовал инструмент "Сортировать от наименьшего к наибольшему". Он выдает результаты только для одного столбца. Если нет, он может отсортировать первый столбец, а другие столбцы изменятся в соответствии с первым. Но я хочу отсортировать все столбцы AZ по отдельности.

Я хочу отсортировать данные по округам.

решение1

1.Выберите столбец, который вы хотите отсортировать. Затем нажмите «Сортировать от наименьшего к наибольшему».

Данные > Сортировка и фильтрация > Сортировка от меньшего к большему

2.Выберите «Продолжить с текущим выбором».

Продолжить с текущим выбором

Как видите, отсортирован был только один столбец.
Сортировка только по одному столбцу

Повторите это для остальных 349 столбцов :)


Чтобы сделать все это за один раз:

  1. Откройте лист, который вы хотите отсортировать.

  2. Откройте редактор VBA с помощью Alt+F11

  3. Вставить > Модуль

  4. Вставьте этот код:

Подсортировать_столбцы_отдельно_AZ()
  Dim rngStart как диапазон
  Dim rngHeaders как диапазон
  Dim c как диапазон
  Установить rngStart = ActiveSheet.Range("A2")
  Установить rngHeaders = ActiveSheet.Range(rngStart, rngStart.End(xlToRight))

  Для каждого c в rngHeaders
    ActiveSheet.Сортировка.ПоляСортировки.Очистить
    ActiveSheet.Сортировка.ПоляСортировки.Добавить ключ:=c, _
      Сортировка:=xlСортировкаПоЗначениям, Порядок:=xlПоВосхождению, ПараметрДанные:=xlСортировкаОбычная
    С ActiveSheet.Сортировка
      .SetRange ActiveSheet.Range(c, c.End(xlDown))
      .Заголовок = xlДа
      .MatchCase = Ложь
      .Ориентация = xlСверхуВниз
      .МетодСортировки = xlPinYin
      .Применять
    Конец с
  Следующий
Конец субтитра
  1. В коде замените ActiveSheet.Range("A2")адрес ячейки, с которой начинается ваша таблица данных, например ActiveSheet.Range("B5").
  2. УдарятьF5

Полученные результаты:
до сортировки и после

Примечание: если в ваших данных есть пустые ячейки, этот код необходимо будет скорректировать для корректной работы в тех столбцах, которые содержат пустые ячейки.

Связанный контент