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

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

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

Microsoft Excel предоставляет несколько способов упорядочить текстовые данные в алфавитном порядке, даты - в хронологическом, а числа - от наименьшего к наибольшему или от наибольшего к наименьшему. Существует также способ сортировки по собственным пользовательским спискам. В дополнение к обычной функции Sort, Excel 365 представляет совершенно новый способ сортировки данных с помощью формул - очень удобный и невероятно простой в использовании!

    Функция Excel SORTBY

    Функция SORTBY в Excel предназначена для сортировки одного диапазона или массива на основе значений в другом диапазоне или массиве. Сортировка может быть выполнена по одному или нескольким столбцам.

    SORTBY - одна из шести новых функций динамического массива, доступных в Excel для Microsoft 365 и Excel 2021. Ее результатом является динамический массив, который распространяется на соседние ячейки и автоматически обновляется при изменении исходных данных.

    Функция SORTBY имеет переменное количество аргументов - первые два являются обязательными, а остальные - необязательными:

    SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2],...)

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

    By_array1 (требуется) - диапазон или массив для сортировки.

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

    • 1 или опущено (по умолчанию) - по возрастанию
    • -1 - по убыванию

    By_array2 / Сорт_порядок2 , ... (необязательно) - дополнительные пары массив/порядок для использования при сортировке.

    Важное замечание! В настоящее время функция SORTBY доступна только в подписках Microsoft 365 и Excel 2021. В Excel 2019, Excel 2016 и более ранних версиях функция SORTBY недоступна.

    Функция SORTBY - 4 вещи, которые нужно помнить

    Чтобы формула Excel SORTBY работала правильно, необходимо обратить внимание на несколько важных моментов:

    • By_array аргументы должны быть либо высотой в одну строку, либо шириной в один столбец.
    • Сайт массив и всё по_массиву Аргументы должны иметь совместимые размеры. Например, при сортировке по двум столбцам, массив , by_array1 и by_array2 должны иметь одинаковое количество строк; в противном случае произойдет ошибка #VALUE.
    • Если массив, возвращаемый SORTBY, является конечным результатом (выводится в ячейку и не передается другой функции), Excel создает динамический диапазон разлива и заполняет его результатами. Поэтому убедитесь, что у вас достаточно пустых ячеек внизу и/или справа от ячейки, в которую вы вводите формулу, иначе вы получите ошибку #SPILL.
    • Результаты формул SORTBY обновляются автоматически при каждом изменении исходных данных. Однако новые записи, добавленные за пределами массива, на который ссылается формула, не включаются в результаты, пока вы не обновите параметр массив ссылка. Чтобы ссылочный массив расширялся автоматически, преобразуйте исходный диапазон в таблицу Excel или создайте динамический именованный диапазон.

    Основная формула SORTBY в Excel

    Вот типичный сценарий использования формулы SORTBY в Excel:

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

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

    • Массив это A2:A10 - поскольку вы не хотите, чтобы Значение столбец, который будет отображаться в результатах, вы оставляете его вне массива.
    • By_array1 это B2:B10 - сортировка по Значение .
    • Сорт_порядок1 равно -1 - по убыванию, т.е. от наибольшего к наименьшему.

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

    =SORTBY(A2:B10, B2:B10, -1)

    Для простоты мы используем формулу на том же листе - вводим ее в ячейку D2 и нажимаем клавишу Enter. Результаты автоматически "расползаются" на столько ячеек, сколько необходимо (в нашем случае D2:D10). Но технически формула находится только в первой ячейке, и удаление ее из D2 приведет к удалению всех результатов.

    При использовании на другом листе формула принимает следующий вид:

    =SORTBY(Sheet1!A2:A10, Sheet1!B2:B10, -1)

    Где Лист1 это рабочий лист, содержащий исходные данные.

    Использование функции SORTBY в Excel - примеры формул

    Ниже вы найдете еще несколько примеров использования SORTBY, которые, надеемся, окажутся полезными и познавательными.

    Сортировка по нескольким столбцам

    Основная формула, рассмотренная выше, сортирует данные по одному столбцу. Но что если вам нужно добавить еще один уровень сортировки?

    Предположим, что наша таблица-образец имеет два поля, Статус (колонка B) и Значение (колонка C) мы хотим отсортировать сначала по Статус в алфавитном порядке, а затем по Значение по убывающей.

    Для сортировки по двум столбцам мы просто добавляем еще одну пару столбцов по_массиву / порядок сортировки аргументы:

    • Массив это A2:C10 - на этот раз мы хотим включить в результаты все три столбца.
    • By_array1 это B2:B10 - сначала, сортировка по Статус .
    • Сорт_порядок1 равно 1 - сортировка в алфавитном порядке от А до Я.
    • By_array2 это C2:C10 - тогда, сортировка по Значение .
    • Сорт_порядок2 равно -1 - сортировка от наибольшего к наименьшему.

    В результате получаем следующую формулу:

    =SORTBY(A2:B10, B2:B10, 1, C2:C10, -1)

    Что переставляет наши данные точно так, как мы их проинструктировали:

    Пользовательская сортировка в Excel с помощью формулы

    Чтобы отсортировать данные в пользовательском порядке, можно воспользоваться функцией Excel Custom Sort или построить формулу SORTBY MATCH таким образом:

    SORTBY(массив, MATCH( диапазон_к_сортировке , пользовательский_список , 0))

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

    Чтобы сделать это, сначала создадим пользовательский список в нужном порядке сортировки ( В процессе выполнения , Завершено , В режиме ожидания ) вводим каждое значение в отдельную ячейку в диапазоне E2:E4.

    Затем, используя общую формулу выше, мы предоставляем исходный диапазон для массив (A2:C10), в Статус колонка для диапазон_к_сортировке (B2:B10), и пользовательский список, который мы создали для пользовательский_список (E2:E4).

    =SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0))

    В результате мы получили проекты, отсортированные по статусу именно так, как нужно:

    Чтобы отсортировать пользовательский список в обратном порядке, поставьте -1 для параметра sort_order1 аргумент:

    =SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0), -1)

    И вы получите проекты, отсортированные в обратном направлении:

    Хотите дополнительно сортировать записи внутри каждого статуса? Нет проблем. Просто добавьте в формулу еще один уровень сортировки, скажем, по Значение (C2:C10), и определите желаемый порядок сортировки, в нашем случае - по возрастанию:

    =SORTBY(A2:C10, MATCH(B2:B10, E2:E5, 0), 1, C2:C10, 1)

    Большим преимуществом формулы SORTBY перед функцией пользовательской сортировки Excel является то, что формула обновляется автоматически при каждом изменении исходных данных, в то время как функция требует очистки и повторной сортировки при каждом изменении.

    Как работает эта формула:

    Как уже упоминалось, функция SORTBY в Excel может обрабатывать только массивы "сортировки по", размеры которых совместимы с исходным массивом. Поскольку наш исходный массив (C2:C10) содержит 9 строк, а пользовательский список (E2:E4) - только 3 строки, мы не можем предоставить его напрямую в функцию по_массиву Вместо этого мы используем функцию MATCH для создания 9-рядного массива:

    MATCH(B2:B10, E2:E5, 0)

    Здесь мы используем Статус столбцы (B2:B10) в качестве значений поиска и наш пользовательский список (E2:E5) в качестве массива поиска. Последний аргумент устанавливается в 0 для поиска точных совпадений. В результате мы получаем массив из 9 чисел, каждое из которых представляет собой относительное положение данного Статус значение в пользовательском списке:

    {1;3;2;1;3;2;2;1;2}

    Этот массив идет непосредственно в по_массиву аргумент функции SORTBY и заставляет ее размещать данные в порядке, соответствующем элементам массива, т.е. сначала записи, представленные 1, затем записи, представленные 2, и так далее.

    Произвольная сортировка в Excel с помощью формулы

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

    В новом Excel вы можете использовать более мощную функцию RANDARRAY вместе с SORTBY:

    СОРТБИ( массив , RANDARRAY(ROWS( массив )))

    Где массив это исходные данные, которые вы хотите перетасовать.

    Эта общая формула работает как для списка, состоящего из одного столбца, так и для многостолбцового диапазона.

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

    =SORTBY(A2:A10, RANDARRAY(ROWS(A2:A10))))

    Чтобы перетасовать данные в A2:C10, сохраняя строки вместе, используйте этот вариант:

    =SORTBY(A2:C10, RANDARRAY(ROWS(A2:C10))))

    Как работает эта формула:

    Функция RANDARRAY создает массив случайных чисел, который будет использоваться для сортировки, и вы передаете его в функции по_массиву аргумент SORTBY. Чтобы указать, сколько случайных чисел генерировать, вы подсчитываете количество строк в исходном диапазоне с помощью функции ROWS и "скармливаете" это число параметру строки аргумент РАНДАРРАЙ. Вот оно!

    Примечание. Как и ее предшественница, RANDARRAY является непостоянной функцией и генерирует новый массив случайных чисел каждый раз, когда рабочий лист пересчитывается. В результате ваши данные будут пересортированы при каждом изменении на листе. Чтобы предотвратить автоматическую пересортировку, вы можете использовать функцию Специальная вставка > Значения функция замены формул их значениями.

    Сортировка ячеек по длине строки

    Чтобы отсортировать ячейки по длине текстовых строк, которые они содержат, используйте функцию LEN для подсчета количества символов в каждой ячейке и передайте вычисленную длину в функцию по_массиву аргумент SORTBY. порядок сортировки аргумент может быть установлен в 1 или -1, в зависимости от предпочтительного порядка сортировки.

    Для сортировки текстовой строки от наименьшей к наибольшей:

    SORTBY(array, LEN(array), 1)

    Сортировка текстовой строки от наибольшей к наименьшей:

    SORTBY(array, LEN(array), -1)

    А вот формула, демонстрирующая этот подход на реальных данных:

    =SORTBY(A2:A7, LEN(A2:A7), 1)

    Где A2:A7 - исходные ячейки, которые вы хотите отсортировать по длине текста в порядке возрастания:

    СОРТБИ против СОРТ

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

    • В отличие от функции SORT, SORTBY не требует, чтобы массив "sort by" был частью исходного массива и не появлялся в результатах. Таким образом, если ваша задача - отсортировать диапазон на основе другого независимого массива или пользовательского списка, SORTBY - подходящая функция. Если вы хотите отсортировать диапазон на основе его собственных значений, то SORT подходит больше.
    • Обе функции поддерживают несколько уровней сортировки, и обе могут быть объединены в цепочку с другими динамическими массивами и обычными функциями.
    • Обе функции доступны только для пользователей Excel 365 и Excel 2021.

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

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

    Неверные аргументы by_array

    Сайт по_массиву аргументы должны быть одной строкой или одним столбцом и быть совместимыми по размеру с массив аргумент. Например, если массив имеет 10 рядов, по_массиву также должно включать 10 строк. В противном случае возникает ошибка #VALUE!

    Недопустимые аргументы sort_order

    Сайт порядок сортировки аргументы могут быть только 1 (по возрастанию) или -1 (по убыванию). Если значение не задано, SORTBY по умолчанию принимает порядок по возрастанию. Если задано любое другое значение, возвращается ошибка #VALUE!

    Недостаточно места для результатов

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

    Исходная рабочая книга закрыта

    Если формула SORTBY ссылается на другой файл Excel, обе рабочие книги должны быть открыты. Если исходная рабочая книга закрыта, возникает ошибка #REF!

    Ваша версия Excel не поддерживает динамические массивы

    При использовании в додинамической версии Excel функция SORT возвращает ошибку #NAME?

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

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

    Формулы Excel SORTBY (файл .xlsx)

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