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

  • Поділитися Цим
Michael Brown

В уроці показано, як використовувати функцію СОРТУВАННЯ для динамічного сортування масивів даних. Ви дізнаєтеся формулу для сортування за алфавітом в Excel, упорядкування чисел за зростанням або спаданням, сортування за кількома стовпчиками та багато іншого.

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

    Функція сортування Excel

    Функція СОРТУВАННЯ в Excel сортує вміст масиву або діапазону по стовпцях або рядках за зростанням або спаданням.

    SORT відноситься до групи функцій Динамічний масив. Результатом є динамічний масив, який автоматично розливається на сусідні комірки по вертикалі або горизонталі, в залежності від форми вихідного масиву.

    Синтаксис функції SORT наступний:

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

    Де:

    Масив (обов'язково) - масив значень або діапазон комірок для сортування. Це можуть бути будь-які значення, включаючи текст, числа, дати, час і т.д.

    Індекс_сортування (необов'язково) - ціле число, яке вказує, за яким стовпцем або рядком сортувати. Якщо не вказано, використовується індекс 1 за замовчуванням.

    Порядок_сортування (необов'язково) - визначає порядок сортування:

    • 1 або пропущено (за замовчуванням) - за зростанням, тобто від найменшого до найбільшого
    • -1 - за спаданням, тобто від найбільшого до найменшого

    По_колу (необов'язково) - логічне значення, яке вказує на напрямок сортування:

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

    Функція Сортування в Excel - поради та примітки

    SORT - це нова функція динамічного масиву, і як така вона має декілька особливостей, про які слід знати:

    • Наразі функція СОРТУВАННЯ доступна лише в Microsoft 365 та Excel 2021. Excel 2019, Excel 2016 не підтримують формули динамічних масивів, тому функція СОРТУВАННЯ недоступна в цих версіях.
    • Якщо масив, що повертається формулою СОРТ, є кінцевим результатом (тобто не передається в іншу функцію), Excel динамічно створює діапазон відповідного розміру і заповнює його відсортованими значеннями. Тому переконайтеся, що внизу та/або праворуч від комірки, в яку ви вводите формулу, завжди є достатньо порожніх комірок, інакше виникне помилка #СПИЛ.
    • Результати оновлюються динамічно, оскільки змінюються вихідні дані. Однак, в той же час масив що постачається у формулу, не поширюється автоматично на нові записи, які додаються поза межами посилань, на які вона посилається масив Для того, щоб включити такі пункти, необхідно або оновити масив у формулі, або перетворити вихідний діапазон у таблицю, як показано в цьому прикладі, або створити динамічний іменований діапазон.

    Базова формула сортування Excel

    У цьому прикладі показана базова формула для сортування даних в Excel за зростанням і спаданням.

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

    Формула для сортування за зростанням

    Для сортування значень у стовпчику B від найменшого до найбільшого використовуйте наступну формулу:

    =SORT(A2:B8, 2, 1)

    Де:

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

    Оскільки наші дані організовані по рядках, останній аргумент можна опустити і за замовчуванням поставити значення FALSE - сортування по рядках.

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

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

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

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

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

    Аналогічним чином можна сортувати текстові значення в алфавітному порядку від А до Я або від Я до А.

    Як відсортувати дані в Excel за допомогою формули

    У наведених нижче прикладах показано кілька типових застосувань функції СОРТУВАННЯ в Excel, а також кілька нетривіальних.

    Сортування Excel по стовпцю

    Коли ви сортуєте дані в Excel, ви здебільшого змінюєте порядок рядків. Але коли ваші дані організовані горизонтально з рядками, що містять мітки, і стовпчиками, що містять записи, вам може знадобитися сортування зліва направо, а не зверху вниз.

    Для сортування по стовпчику в Excel встановіть значення by_col аргумент до ІСТИНИ. В даному випадку, sort_index буде представляти рядок, а не стовпець.

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

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

    Де:

    • B1:H2 - вихідні дані для сортування
    • 2 - індекс сортування, оскільки ми сортуємо числа у другому рядку
    • -1 вказує на порядок сортування за спаданням
    • TRUE означає сортування стовпців, а не рядків

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

    При роботі зі складними моделями даних часто може знадобитися багаторівневе сортування. Чи можна це зробити за допомогою формули? Так, легко! Для цього достатньо вказати константи масиву для sort_index і порядок_сортування аргументи.

    Наприклад, щоб відсортувати наведені нижче дані спочатку за Регіон (колонка А) від А до Я, а потім на Кількість . (стовпчик С) від найменшого до найбільшого, задайте наступні аргументи:

    • Масив це дані в графах А2:С13.
    • Індекс_сортування є константою масиву {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.

    Як приклад, ми витягнемо з вихідних даних у комірках A2:B9 елементи, кількість яких дорівнює або перевищує 30 (>=30), і розташуємо результати в порядку зростання.

    Для цього спочатку встановлюємо умову, скажімо, в комірці Е2, як показано на малюнку нижче. А потім будуємо нашу формулу СОРТУВАННЯ в Excel таким чином:

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

    Крім того масив що генерується функцією FILTER, ми вказуємо тільки sort_index Решта два аргументи опущені, оскільки за замовчуванням вони працюють саме так, як нам потрібно (сортування за зростанням, по рядках).

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

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

    Наводимо загальну формулу:

    INDEX(SORT(...), SEQUENCE( n ), { column1_to_return , стовпчик2_для_повернення , ...})

    Де n кількість значень, які потрібно повернути.

    З наведеного нижче набору даних припустимо, що ви хочете отримати список з 3 найкращих на основі чисел у колонці С.

    Для цього спочатку потрібно відсортувати масив 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(...), n , { column1_to_return , стовпчик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, щоб упорядкувати значення в діапазоні A2:B8 в алфавітному порядку:

    =SORT(A2:B8, 1, 1)

    Потім ви вводите новий запис у рядку 9... і розчаровуєтесь, побачивши, що новий доданий запис не потрапляє в діапазон розливу:

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

    =SORT(Table1, 1, 1)

    При введенні нового запису безпосередньо під останнім рядком таблиця автоматично розгорнеться, і нові дані будуть включені в діапазон розливу формули СОРТУВАННЯ:

    Не працює функція сортування в Excel

    Якщо ваша формула SORT призводить до помилки, це, швидше за все, пов'язано з наступними причинами.

    Помилка #NAME: стара версія Excel

    СОРТУВАННЯ є новою функцією і працює тільки в Excel 365 і Excel 2021. У старих версіях, де ця функція не підтримується, виникає помилка #NAME?

    #Помилка розливу: щось блокує діапазон розливу

    Якщо одна або кілька клітинок в діапазоні розливу не повністю порожні або злиті, відображається помилка #SPILL! Для її виправлення просто видаліть блокування. Для отримання додаткової інформації див. статтю Помилка Excel #SPILL! - що це означає і як її виправити.

    #VALUE помилка: невірні аргументи

    Щоразу, коли ви стикаєтеся з помилкою #VALUE!, перевірте sort_index і порядок_сортування аргументи. Індекс_сортування не повинно перевищувати кількість колонок - це масив і порядок_сортування має бути або 1 (зростаюче), або -1 (спадаюче).

    #REF помилка: вихідна книга закрита

    Оскільки динамічні масиви мають обмежену підтримку посилань між робочими книгами, функція SORT вимагає, щоб обидва файли були відкриті. Якщо вихідна робоча книга закрита, формула видасть помилку #REF! Для її виправлення достатньо відкрити файл, на який є посилання.

    Ось так можна відсортувати дані в Excel за допомогою формули. Дякую за увагу і сподіваюся побачити вас на нашому блозі наступного тижня!

    Практичний посібник для завантаження

    Сортування в Excel за допомогою формул (файл .xlsx)

    Майкл Браун — відданий ентузіаст технологій із пристрастю до спрощення складних процесів за допомогою програмних засобів. Маючи понад десятирічний досвід роботи в технологічній індустрії, він відточив свої навички роботи з Microsoft Excel і Outlook, а також із Google Таблицями та Документами. Блог Майкла присвячений тому, щоб поділитися своїми знаннями та досвідом з іншими, надаючи прості поради та навчальні посібники для підвищення продуктивності та ефективності. Незалежно від того, чи є ви досвідченим професіоналом чи початківцем, блог Майкла пропонує цінну інформацію та практичні поради щодо отримання максимальної користі від цих основних програмних інструментів.