Оглавление
Сегодня мы подробно рассмотрим синтаксис и типичные случаи использования новой функции динамического массива 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)