Зміст
Сьогодні ми детально розглянемо синтаксис і типові застосування нової функції динамічного масиву SORTBY. Ви дізнаєтеся, як виконати сортування в Excel за формулою, довільне сортування списку, впорядкування комірок за довжиною тексту і багато іншого.
Microsoft Excel надає безліч способів упорядкування текстових даних в алфавітному порядку, дат - у хронологічному порядку, чисел - від меншого до більшого або від більшого до меншого. Також є можливість сортування за власними списками. На додаток до звичайного функціоналу "Сортування", в Excel 365 представлений абсолютно новий спосіб сортування даних за допомогою формул - дуже зручний і неймовірно простий у використанні!
Функція сортування Excel SORTBY
Функція СОРТИРОВАТЬ в Excel призначена для сортування одного діапазону або масиву на основі значень в іншому діапазоні або масиві. Сортування може здійснюватися по одному або декільком стовпчикам.
Сортування - одна з шести нових функцій динамічних масивів, доступних в Excel для Microsoft 365 і Excel 2021. Її результатом є динамічний масив, який поширюється на сусідні комірки і автоматично оновлюється при зміні вихідних даних.
Функція SORTBY має змінну кількість аргументів - перші два є обов'язковими, а інші - необов'язковими:
SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2],...)Масив (обов'язково) - діапазон комірок або масив значень, що сортуються.
By_array1 (обов'язково) - діапазон або масив для сортування.
Порядок_сортування1 (необов'язково) - порядок сортування:
- 1 або не вказано (за замовчуванням) - за зростанням
- -1 - спадний
By_array2 / Порядок_сортування2 , ... (необов'язково) - додаткові пари масивів / порядків, які використовуватимуться для сортування.
Наразі функція сортування доступна лише в передплатах на Microsoft 365 та Excel 2021. В Excel 2019, Excel 2016 та більш ранніх версіях функція сортування недоступна.
Функція SORTBY - 4 речі, про які варто пам'ятати
Щоб формула сортування в Excel працювала правильно, слід звернути увагу на кілька важливих моментів:
- By_array аргументи повинні бути розміщені або в один рядок, або в один стовпчик.
- На сьогоднішній день, на жаль, це не так. масив і все by_array аргументи повинні мати сумісні розмірності. Наприклад, при сортуванні за двома стовпчиками, масив , by_array1 і by_array2 повинні мати однакову кількість рядків, інакше виникне помилка #VALUE.
- Якщо масив, що повертається функцією СОРТИРОВКА, є кінцевим результатом (виводиться в комірку і не передається в іншу функцію), Excel створює динамічний діапазон розливу і заповнює його результатами. Тому переконайтеся, що у вас достатньо порожніх комірок нижче і/або правіше комірки, в яку ви вводите формулу, інакше ви отримаєте помилку #SPILL.
- Результати формул сортування оновлюються автоматично при зміні вихідних даних. Однак нові записи, додані за межами масиву, на який є посилання у формулі, не включаються в результати, якщо ви не оновите значення параметра масив Для автоматичного розширення масиву, на який є посилання, перетворіть вихідний діапазон у таблицю Excel або створіть динамічний іменований діапазон.
Базова формула сортування в Excel
Наведемо типовий сценарій використання формули SORTBY в Excel:
Припустимо, у вас є список проектів з Значення Ви хочете відсортувати проекти за їх вартістю на окремому аркуші. Оскільки іншим користувачам не потрібно бачити цифри, краще не включати поле Значення у колонці результатів.
Завдання легко вирішується за допомогою функції СОРТИРОВАТЬ, для якої задаються наступні аргументи:
- Масив є A2:A10 - оскільки ви не бажаєте, щоб Значення стовпчик, який буде виводитися в результатах, ви залишаєте поза масивом.
- By_array1 є B2:B10 - сортування за Значення .
- Порядок_сортування1 де -1 - за спаданням, тобто від найвищого до найнижчого.
Склавши аргументи докупи, отримуємо таку формулу:
=SORTBY(A2:B10, B2:B10, -1)
Для простоти використовуємо формулу на тому ж аркуші - вводимо її в D2 і натискаємо клавішу Enter. Результати автоматично "розливаються" на стільки комірок, скільки потрібно (D2:D10 в нашому випадку). Але технічно формула знаходиться тільки в першій комірці, і видалення її з D2 призведе до видалення всіх результатів.
При використанні на іншому аркуші формула набуває наступного вигляду:
=SORTBY(Лист1!A2:A10, Лист1!B2:B10, -1)
Де Аркуш1 робочий аркуш, що містить вихідні дані.
Використання функції SORTBY в Excel - приклади формул
Нижче ви знайдете ще кілька прикладів використання SORTBY, які, сподіваємося, виявляться корисними і пізнавальними.
Сортування за кількома стовпчиками
Базова формула, розглянута вище, сортує дані по одному стовпцю. Але що робити, якщо потрібно додати ще один рівень сортування?
Припустимо, що наша таблиця має два поля, Статус (колонка В) та Значення (колонка С) ми хочемо відсортувати спочатку за Статус за алфавітом, а потім за Значення знижуються.
Для сортування за двома стовпчиками просто додамо ще одну пару by_array / порядок_сортування аргументи:
- Масив A2:C10 - цього разу ми хочемо включити в результати всі три стовпчики.
- By_array1 є B2:B10 - спочатку відсортувати по Статус .
- Порядок_сортування1 дорівнює 1 - відсортувати за алфавітом від A до Z.
- By_array2 дорівнює C2:C10 - тоді, сортування за Значення .
- Порядок_сортування2 є -1 - сортування від найбільшого до найменшого.
В результаті отримуємо наступну формулу:
=SORTBY(A2:B10, B2:B10, 1, C2:C10, -1)
Який переставляє наші дані саме так, як ми йому вказали:
Користувацьке сортування в Excel за формулою
Для сортування даних у довільному порядку можна скористатися функцією Спеціальне сортування Excel або побудувати таким чином формулу СОРТУВАННЯ ЗА ВІДПОВІДНІСТЮ:
SORTBY(array, MATCH( діапазон_до_сортування , користувацький_список , 0))Придивившись уважніше до нашого набору даних, ви, ймовірно, побачите, що зручніше сортувати проекти за статусом "логічно", наприклад, за важливістю, а не за алфавітом.
Для цього спочатку створюємо користувацький список у потрібному порядку сортування ( У процесі виконання , Завершено , На утриманні ), вводячи кожне значення в окрему комірку в діапазоні E2:E4.
А потім, використовуючи наведену вище загальну формулу, ми надаємо діапазон джерел для масив (А2:С10), про що свідчать дані, наведені в Статус стовпчик для діапазон_до_сортування (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)
А у вас проекти будуть відсортовані у зворотному напрямку:
Хочете додатково відсортувати записи всередині кожного статусу? Не проблема, просто додайте у формулу ще один рівень сортування, наприклад, по Значення (С2:С10), і визначити бажаний порядок сортування, в нашому випадку за зростанням:
=SORTBY(A2:C10, MATCH(B2:B10, E2:E5, 0, 1, C2:C10, 1)
Великою перевагою формули SORTBY над функцією спеціального сортування Excel є те, що формула оновлюється автоматично при зміні вихідних даних, тоді як функція вимагає очищення та повторного сортування при кожній зміні.
Як працює ця формула:
Як вже зазначалося, функція СОРТИРОВАТЬ в Excel може обробляти тільки масиви, розміри яких сумісні з вихідним масивом. Оскільки наш вихідний масив (C2:C10) містить 9 рядків, а користувацький список (E2:E4) - лише 3 рядки, ми не можемо передати його безпосередньо в функцію by_array Замість цього ми використовуємо функцію MATCH для створення 9-рядкового масиву:
MATCH(B2:B10, E2:E5, 0)
Тут ми використовуємо Статус (B2:B10) в якості шуканих значень і наш користувацький список (E2:E5) в якості масиву пошуку. Останній аргумент встановлюється в 0 для пошуку точних збігів. В результаті отримуємо масив з 9 чисел, кожне з яких представляє відносну позицію заданого елемента Статус значення в користувацькому списку:
{1;3;2;1;3;2;2;1;2}
Цей масив переходить безпосередньо до by_array аргументу функції СОРТИРОВАТЬ і змушує її розмістити дані в порядку, що відповідає елементам масиву, тобто спочатку записи, представлені одиницями, потім записи, представлені двійками, і так далі.
Випадкове сортування в Excel за формулою
У попередніх версіях Excel можна виконати випадкове сортування за допомогою функції RAND, як описано в цьому посібнику: Як виконати випадкове сортування списку в Excel.
У новому Excel можна використовувати більш потужну функцію RANDARRAY разом з SORTBY:
SORTBY( масив , RANDARRAY(ROWS( масив )))Де масив вихідні дані, які потрібно перемішати.
Ця загальна формула працює як для списку, що складається з одного стовпчика, так і для багатостовпчикового діапазону.
Наприклад, для випадкового сортування списку в діапазоні А2:А10 використовується така формула:
=SORTBY(A2:A10, RANDARRAY(ROWS(A2:A10)))
Щоб перемішати дані в комірках A2:C10, зберігши рядки разом, використовуйте цю функцію:
=SORTBY(A2:C10, RANDARRAY(ROWS(A2:C10)))
Як працює ця формула:
Функція RANDARRAY створює масив випадкових чисел для сортування, який ви передаєте в параметрі by_array Щоб вказати, скільки випадкових чисел згенерувати, потрібно підрахувати кількість рядків у вихідному діапазоні за допомогою функції ROWS, і "передати" це число функції SORTBY ряди аргумент РЕНДЕРРЕЯ. Це все!
Примітка. Як і його попередник, RANDARRAY є нестабільною функцією і генерує новий масив випадкових чисел при кожному перерахунку робочого аркуша. В результаті, ваші дані будуть відновлюватися при кожній зміні на аркуші. Щоб запобігти автоматичному відновленню, ви можете скористатися кнопкою Паста спеціальна > Цінності для заміни формул їх значеннями.
Сортування комірок за довжиною рядка
Для сортування комірок за довжиною текстових рядків, що містяться в них, використовуйте функцію LEN для підрахунку кількості символів у кожній комірці, а обчислені довжини передайте в функцію by_array аргумент СОРТБІ. порядок_сортування може мати значення 1 або -1, в залежності від бажаного порядку сортування.
Сортування по текстовому рядку від найменшого до найбільшого:
SORTBY(array, LEN(array), 1)Відсортувати текстовий рядок від найбільшого до найменшого:
SORTBY(array, LEN(array), -1)І ось формула, яка демонструє цей підхід на реальних даних:
=SORTBY(A2:A7, LEN(A2:A7), 1)
Де A2:A7 - вихідні комірки, які потрібно відсортувати за довжиною тексту в порядку зростання:
SORTBY проти SORT
У групі нових функцій динамічних масивів Excel є дві, призначені для сортування. Нижче ми перерахуємо найбільш суттєві відмінності та схожість, а також випадки, коли кожну з них краще використовувати.
- На відміну від функції СОРТ, функція СОРТУВАННЯ по не вимагає, щоб масив, по якому сортується, був частиною вихідного масиву, а також не повинен з'являтися в результатах. Таким чином, якщо ваше завдання полягає в сортуванні діапазону на основі іншого незалежного масиву або користувацького списку, то функція СОРТУВАННЯ по є правильною для використання. Якщо ж ви хочете відсортувати діапазон на основі його власних значень, то функція СОРТУВАННЯ є більш доцільною.
- Обидві функції підтримують багаторівневе сортування і можуть бути об'єднані в ланцюжок з іншими динамічними масивами та звичайними функціями.
- Обидві функції доступні лише користувачам Excel 365 та Excel 2021.
Не працює функція сортування Excel SORTBY
Якщо ваша формула SORTBY повертає помилку, це, швидше за все, пов'язано з однією з наступних причин.
Неправильні аргументи by_array
На сьогоднішній день, на жаль, це не так. by_array повинні бути єдиним рядком або єдиним стовпцем і сумісними за розміром з аргументами масив Наприклад, якщо масив має 10 рядів, by_array також має містити 10 рядків, інакше виникає помилка #VALUE!
Неправильні аргументи sort_order
На сьогоднішній день, на жаль, це не так. порядок_сортування може бути тільки 1 (за зростанням) або -1 (за спаданням). Якщо значення не задано, SORTBY за замовчуванням сортує за зростанням. Якщо задано будь-яке інше значення, повертається помилка #VALUE!
Не вистачає місця для результатів
Як і будь-яка інша функція динамічного масиву, SORTBY розливає результати в автоматично змінюваний і оновлюваний діапазон. Якщо порожніх комірок недостатньо для відображення всіх значень, виникає помилка #SPILL!
Вихідна книга закрита
Якщо формула СОРТУВАННЯ посилається на інший файл Excel, обидві книги повинні бути відкриті. Якщо вихідна книга закрита, виникає помилка #REF!
Ваша версія Excel не підтримує динамічні масиви
При використанні в додинамічній версії Excel функція СОРТУВАННЯ повертає помилку #ІМ'Я?
Ось так можна використовувати функцію СОРТИРОВАТЬ в Excel для сортування за користувацькими параметрами та інших речей. Дякую за прочитання і сподіваюся побачити вас на нашому блозі наступного тижня!
Практичний посібник для завантаження
Формули Excel SORTBY (файл .xlsx)