Функция Excel SORT - автоматическая сортировка данных с помощью формулы

  • Поделись Этим
Michael Brown

В учебнике показано, как использовать функцию SORT для динамической сортировки массивов данных. Вы узнаете формулу для сортировки по алфавиту в Excel, расположения чисел в порядке возрастания или убывания, сортировки по нескольким столбцам и многое другое.

Функция сортировки существует уже давно. Но с появлением динамических массивов в Excel 365 появился удивительно простой способ сортировки с помощью формул. Прелесть этого метода в том, что результаты автоматически обновляются при изменении исходных данных.

    Функция СОРТ в Excel

    Функция SORT в Excel сортирует содержимое массива или диапазона по столбцам или строкам в порядке возрастания или убывания.

    SORT относится к группе функций динамических массивов. В результате получается динамический массив, который автоматически распространяется на соседние ячейки по вертикали или горизонтали, в зависимости от формы исходного массива.

    Синтаксис функции SORT следующий:

    SORT(array, [sort_index], [sort_order], [by_col])

    Где:

    Массив (обязательно) - массив значений или диапазон ячеек для сортировки. Это могут быть любые значения, включая текст, числа, даты, время и т.д.

    Sort_index (необязательно) - целое число, указывающее, по какому столбцу или строке сортировать. Если не указано, то по умолчанию используется индекс 1.

    Сортировка_порядка (необязательно) - определяет порядок сортировки:

    • 1 или опущено (по умолчанию) - порядок возрастания, т.е. от наименьшего к наибольшему
    • -1 - порядок убывания, т.е. от наибольшего к наименьшему

    By_col (необязательно) - логическое значение, указывающее направление сортировки:

    • FALSE или опущено (по умолчанию) - сортировка по строке. Вы будете использовать эту опцию большую часть времени.
    • TRUE - сортировка по столбцам. Используйте эту опцию, если ваши данные организованы горизонтально в столбцах, как в этом примере.

    Функция SORT в Excel - советы и примечания

    SORT - это новая функция динамического массива, и как таковая она имеет несколько особенностей, о которых вы должны знать:

    • В настоящее время функция SORT доступна только в Microsoft 365 и Excel 2021. Excel 2019, Excel 2016 не поддерживают формулы динамических массивов, поэтому функция SORT недоступна в этих версиях.
    • Если массив, возвращаемый формулой SORT, является конечным результатом (т.е. не передается другой функции), Excel динамически создает диапазон соответствующего размера и заполняет его отсортированными значениями. Поэтому убедитесь, что у вас всегда достаточно пустых ячеек внизу или справа от ячейки, в которую вы вводите формулу, иначе возникнет ошибка #SPILL.
    • Результаты обновляются динамически по мере изменения исходных данных. Однако, при этом массив поставляемые в формулу, не распространяются автоматически на новые записи, добавляемые за пределами ссылаемой формулы. массив Чтобы включить такие элементы, вам необходимо либо обновить массив ссылку в формуле, или преобразовать исходный диапазон в таблицу, как показано в этом примере, или создать динамический именованный диапазон.

    Основная формула сортировки в Excel

    В этом примере показана базовая формула для сортировки данных в Excel по возрастанию и убыванию.

    Предположим, что ваши данные расположены в алфавитном порядке, как показано на скриншоте ниже. Вам нужно отсортировать числа в столбце B, не разбивая и не перемешивая данные.

    Формула для сортировки по возрастанию

    Чтобы отсортировать значения в столбце B от наименьшего к наибольшему, используйте следующую формулу:

    =SORT(A2:B8, 2, 1)

    Где:

    • A2:B8 - исходный массив
    • 2 - номер столбца для сортировки
    • 1 - порядок сортировки по возрастанию

    Поскольку наши данные организованы в виде строк, последний аргумент можно опустить, чтобы по умолчанию стояло значение FALSE - сортировка по строкам.

    Просто введите формулу в любую пустую ячейку (в нашем случае D2), нажмите Enter , и результаты автоматически распространятся на D2:E8.

    Формула для сортировки в порядке убывания

    Для сортировки данных по убыванию, т.е. от наибольшего к наименьшему, установите параметр порядок сортировки аргумент в -1 следующим образом:

    =SORT(A2:B8, 2, -1)

    Введите формулу в левую верхнюю ячейку диапазона назначения и получите такой результат:

    Аналогичным образом можно сортировать текстовые значения в алфавитном порядке от A до Z или от Z до A.

    Как отсортировать данные в Excel с помощью формулы

    Приведенные ниже примеры показывают несколько типичных случаев использования функции SORT в Excel и несколько нетривиальных.

    Сортировка в Excel по столбцам

    Когда вы сортируете данные в Excel, в большинстве случаев вы изменяете порядок следования строк. Но если ваши данные организованы горизонтально: строки содержат метки, а столбцы - записи, вам может понадобиться сортировка слева направо, а не сверху вниз.

    Для сортировки по столбцам в Excel установите параметр by_col аргумент в TRUE. В данном случае, сортировочный_индекс будет представлять строку, а не столбец.

    Например, чтобы отсортировать приведенные ниже данные по количеству от наибольшего к наименьшему, используйте эту формулу:

    =SORT(B1:H2, 2, 1, TRUE)

    Где:

    • B1:H2 - исходные данные для сортировки
    • 2 - это индекс сортировки, так как мы сортируем числа во втором ряду
    • -1 указывает на порядок сортировки по убыванию
    • TRUE означает сортировку столбцов, а не строк

    Сортировка по нескольким столбцам в разном порядке (многоуровневая сортировка)

    При работе со сложными моделями данных вам часто может понадобиться многоуровневая сортировка. Можно ли это сделать с помощью формулы? Да, легко! Все, что вы делаете, это предоставляете константы массива для сортировочный_индекс и порядок сортировки аргументы.

    Например, чтобы отсортировать приведенные ниже данные сначала по Регион (столбец A) от A до Z, а затем по Кол-во . (столбец C) от наименьшего к наибольшему, задайте следующие аргументы:

    • Массив это данные в A2:C13.
    • Sort_index является константой массива {1,3}, так как мы сначала сортируем по Регион (1-я колонка), а затем по Кол-во . (3-я колонка).
    • Сортировка_порядка является константой массива {1,-1}, так как 1-й столбец должен быть отсортирован по возрастанию, а 3-й - по убыванию.
    • By_col опущен, поскольку мы сортируем строки, что является стандартным.

    Сложив аргументы вместе, мы получаем такую формулу:

    =SORT(A2:C13, {1,3}, {1,-1})

    Текстовые значения в первом столбце отсортированы по алфавиту, а числа в третьем столбце - от наибольшего к наименьшему:

    Сортировка и фильтр в Excel

    В случае, если вам нужно отфильтровать данные по каким-либо критериям и упорядочить вывод, используйте функции SORT и FILTER вместе:

    SORT(FILTER(array, диапазон_критериев = критерии ), [sort_index], [sort_order], [by_col])

    Функция FILTER получает массив значений на основе заданных вами критериев и передает этот массив в первый аргумент SORT.

    Самое лучшее в этой формуле то, что она также выводит результаты в виде динамического диапазона разлива, без необходимости нажимать Ctrl + Shift + Enter или гадать, в какое количество ячеек ее скопировать. Как обычно, вы вводите формулу в самую верхнюю ячейку и нажимаете клавишу Enter.

    В качестве примера мы собираемся извлечь товары с количеством, равным или большим 30 (>=30), из исходных данных в A2:B9 и расположить результаты в порядке возрастания.

    Для этого мы сначала задаем условие, скажем, в ячейке E2, как показано на рисунке ниже. А затем строим нашу формулу Excel SORT таким образом:

    =SORT(FILTER(A2:B9, B2:B9>=E2), 2)

    Помимо массив сгенерированный функцией FILTER, мы указываем только параметр сортировочный_индекс оставшиеся два аргумента опущены, поскольку значения по умолчанию работают именно так, как нам нужно (сортировка по возрастанию, по строкам).

    Получить N наибольших или наименьших значений и отсортировать результаты

    При анализе огромных массивов информации часто возникает необходимость извлечь определенное количество верхних значений. Возможно, не просто извлечь, но и расположить их в нужном порядке. А в идеале - выбрать, какие столбцы включить в результаты. Звучит сложно? Но только не с новыми функциями динамических массивов!

    Вот общая формула:

    INDEX(SORT(...), SEQUENCE( n ), { столбец1_к_возврату , столбец2_к_возврату , ...})

    Где n это номер значений, которые вы хотите вернуть.

    Из приведенного ниже набора данных предположим, что вы хотите получить список топ-3, основанный на числах в столбце C.

    Чтобы это сделать, сначала отсортируйте массив A2:C13 по 3-му столбцу в порядке убывания:

    SORT(A2:C13, 3, -1)

    А затем, вложите вышеприведенную формулу в первый ( массив ) аргумента функции INDEX, чтобы массив был отсортирован от наибольшего к наименьшему.

    Для второго ( row_num ) аргумент, который указывает, сколько строк нужно вернуть, генерирует необходимые последовательные числа с помощью функции SEQUENCE. Поскольку нам нужно 3 верхних значения, мы используем SEQUENCE(3), что то же самое, что и ввод константы вертикального массива {1;2;3} непосредственно в формуле.

    Для третьего ( col_num ) аргумент, который определяет, сколько столбцов нужно вернуть, введите номера столбцов в виде константы горизонтального массива. Мы хотим вернуть столбцы B и C, поэтому используем массив {2,3}.

    В конечном итоге мы получаем следующую формулу:

    =INDEX(SORT(A2:C13, 3, -1), SEQUENCE(3), {2,3})

    И это дает именно те результаты, которые мы хотим:

    Вернуться 3 дно значения, просто отсортируйте исходные данные от наименьшего к наибольшему. Для этого измените порядок сортировки аргумент от -1 до 1:

    =INDEX(SORT(A2:C13, 3, 1), SEQUENCE(3), {2,3})

    Возврат отсортированного значения в определенной позиции

    Если посмотреть с другой стороны, что если вы хотите вернуть только определенную позицию сортировки? Скажем, только 1-ю, только 2-ю или только 3-ю запись из отсортированного списка? Чтобы сделать это, используйте упрощенную версию формулы INDEX SORT, рассмотренную выше:

    INDEX(SORT(...), n , { столбец1_к_возврату , столбец2_к_возврату , ...})

    Где n является интересующей нас позицией.

    Например, чтобы получить определенную позицию сверху (т.е. из данных, отсортированных по убыванию), используйте эту формулу:

    =INDEX(SORT(A2:C13, 3, -1), F1, {2,3})

    Чтобы получить конкретную позицию снизу (т.е. из данных, отсортированных по возрастанию), используйте эту:

    =INDEX(SORT(A2:C13, 3, 1), I1, {2,3})

    Где A2:C13 - исходные данные, F1 - позиция сверху, I1 - позиция снизу, и {2,3} - возвращаемые столбцы.

    Использование таблицы Excel для автоматического расширения массива сортировки

    Как вы уже знаете, отсортированный массив автоматически обновляется при внесении изменений в исходные данные. Это стандартное поведение всех функций динамических массивов, включая SORT. Однако, когда вы добавляете новые записи за пределами ссылочного массива, они не включаются в формулу автоматически. Если вы хотите, чтобы ваша формула реагировала на такие изменения, преобразуйте исходный диапазон к полностью-функциональную таблицу Excel и использовать структурированные ссылки в формуле.

    Чтобы увидеть, как это работает на практике, пожалуйста, рассмотрите следующий пример.

    Предположим, вы используете приведенную ниже формулу Excel SORT, чтобы расположить значения в диапазоне A2:B8 в алфавитном порядке:

    =SORT(A2:B8, 1, 1)

    Затем вы вводите новую запись в строку 9... и с разочарованием видите, что вновь добавленная запись осталась вне диапазона разлива:

    Теперь преобразуйте исходный диапазон в таблицу. Для этого просто выделите диапазон, включая заголовки столбцов (A1:B8), и нажмите Ctrl + T. При построении формулы выделите исходный диапазон с помощью мыши, и имя таблицы будет автоматически вставлено в формулу (это называется структурированной ссылкой):

    =SORT(Table1, 1, 1)

    Когда вы введете новую запись прямо под последней строкой, таблица автоматически расширится, и новые данные будут включены в диапазон разлива формулы SORT:

    Функция сортировки в Excel не работает

    Если ваша формула SORT приводит к ошибке, это, скорее всего, происходит по следующим причинам.

    #ОШИБКА НАЗВАНИЯ: старая версия Excel

    SORT является новой функцией и работает только в Excel 365 и Excel 2021. В более старых версиях, где эта функция не поддерживается, возникает ошибка #NAME?

    #SPILL ошибка: что-то блокирует диапазон разлива

    Если одна или несколько ячеек в диапазоне разлива не полностью пусты или слиты, отображается ошибка #SPILL! Чтобы исправить ее, просто устраните блокировку. Для получения дополнительной информации см. в статье Ошибка Excel #SPILL! - что она означает и как исправить.

    #VALUE ошибка: недопустимые аргументы

    Каждый раз, когда вы сталкиваетесь с ошибкой #VALUE!, проверьте параметр сортировочный_индекс и порядок сортировки аргументы. Sort_index не должно превышать количество столбцов массив и порядок сортировки должно быть либо 1 (по возрастанию), либо -1 (по убыванию).

    #REF ошибка: исходная рабочая книга закрыта

    Поскольку динамические массивы имеют ограниченную поддержку ссылок между рабочими книгами, функция SORT требует, чтобы оба файла были открыты. Если исходная рабочая книга закрыта, формула выдаст ошибку #REF! Чтобы исправить это, просто откройте файл со ссылкой.

    Вот как сортировать данные в Excel с помощью формулы. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!

    Рабочая тетрадь для тренировок для скачивания

    Сортировка в Excel с помощью формул (файл .xlsx)

    Майкл Браун — увлеченный технологический энтузиаст, стремящийся упростить сложные процессы с помощью программных инструментов. Имея более чем десятилетний опыт работы в технологической отрасли, он отточил свои навыки в Microsoft Excel и Outlook, а также в Google Sheets и Docs. Блог Майкла посвящен тому, чтобы делиться своими знаниями и опытом с другими, предоставляя простые советы и учебные пособия для повышения производительности и эффективности. Являетесь ли вы опытным профессионалом или новичком, в блоге Майкла вы найдете ценную информацию и практические советы, которые помогут вам максимально эффективно использовать эти важные программные инструменты.