Оглавление
В учебнике показано, как использовать функцию 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)