Как использовать функцию SORTBY в Excel — детальное руководство

Microsoft Excel предлагает мощные инструменты для компиляции, организации и визуализации данных. Иногда нужно создать несколько специальных представлений одного и того же набора данных — например, отсортировать по регионам, потом внутри региона по продажам и затем по фамилии. Функция SORTBY даёт удобный и контролируемый способ получить такие представления, не меняя оригинал.
Когда полезна SORTBY
- Когда нужно создать отдельный отсортированный вид данных, не трогая исходный диапазон.
- Когда сортировка должна выполняться по нескольким критериям с разными направлениями (по возрастанию/убыванию) для каждого критерия.
- Когда строите интерактивные отчёты и дашборды, где разные представления должны жить рядом.
Пример в этой статье: список продаж по регионам со столбцами «Фамилия», «Штат», «Количество продаж», «Выручка».
Базовое использование SORTBY — шаг за шагом
Чтобы отсортировать всех сотрудников по колонке «Штат»:
- Выберите ячейку F2.
- Введите в ячейку или в строку формул:
=SORTBY(A2:D16,B2:B16)- Нажмите Enter.
Функция сортирует массив A2:D16 по значениям в B2:B16 по возрастанию (A→Z) по умолчанию. Результат выводится в виде динамического массива — Excel «выплескивает» (spill) отсортированную таблицу в соседние ячейки.
Важно: динамический массив может вызвать ошибку #SPILL!, если в месте вывода уже есть данные. Освободите диапазон или поместите формулу в пустую область.
Сортировка по нескольким критериям
Чтобы отсортировать сначала по штату, затем по количеству продаж (внутри одного штата — от большего к меньшему):
- Выберите ячейку F2 (или K2, если хотите оставить первую версию).
- Введите:
=SORTBY(A2:D16,B2:B16,1,C2:C16,-1)- Нажмите Enter.
Здесь синтаксис такой: SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2], …).
- array — основной диапазон (A2:D16).
- by_array1 — первый ключ сортировки (B2:B16).
- sort_order1 — направление: 1 = возрастание, -1 = убывание.
Каждый by_array должен иметь ровно столько элементов, сколько строк в array; иначе Excel вернёт ошибку #VALUE!. Нельзя объединять несколько столбцов в одну by_array как B2:C16 — это вызовет #REF!, потому что Excel не поймёт порядок критериев внутри объединённого диапазона.
Подробное объяснение частых ошибок
- #SPILL! — место вывода массива занято. Убедитесь, что справа/внизу диапазон свободен.
- #REF! — указаны некорректные диапазоны (например, объединили ключи: B2:C16). Каждый ключ должен быть отдельным диапазоном одной строки или одного столбца.
- #VALUE! — длина одного из by_array не соответствует длине array; либо указан недопустимый sort_order (не 1 и не -1).
Практические шаблоны и продвинутые приёмы
- Топ-N по каждой группе (Пример: топ-3 продавца по каждому штату)
- Комбинируем SORTBY + FILTER + INDEX/SEQUENCE. Идея: для каждого штата фильтровать строки и брать первые N.
Мини-шаблон (псевдо-алгоритм):
- Получаем список уникальных штатов: UNIQUE(B2:B16).
- Для каждого штата применяем FILTER(array, B2:B16=штат).
- Сортируем этот отфильтрованный набор по продажам DESC: SORTBY(filtered, Crange, -1).
- Берём первые N строк с помощью INDEX или SEQUENCE.
Это можно автоматизировать в отдельной таблице с формулами, но конкретная формула зависит от структуры и версии Excel.
- Сортировка с сохранением оригинальной последовательности (частичная сортировка)
Если нужно получить отсортированный вид, но при равных значениях ключа сохранить исходный порядок, добавьте вспомогательный ключ — порядковый номер строки (например, SEQUENCE или COLUMN/ROW) как последний критерий сортировки.
- Комбинация с FILTER для динамических отчётов
Чтобы показать только строки с продажами > X и отсортировать результат:
=SORTBY(FILTER(A2:D16,C2:C16>10),C2:C16,-1)Важно: внутри FILTER и SORTBY используйте согласованные диапазоны.
Альтернативные подходы и когда их выбрать
- Стандартная функция SORT — подходит для простых одно- или двухкритериальных случаев, но требует ручной последовательности аргументов и чаще применяется к одному столбцу.
- Инструмент “Сортировка и фильтр“ (Data → Sort) — удобен для одноразовой сортировки исходных данных, но меняет оригинал и неудобен при необходимости поддерживать несколько представлений одновременно.
- Сводные таблицы (PivotTable) — идеальны для агрегации и интерактивной группировки (например, суммы по штатам), но не дают явного упорядоченного списка строк с нестандартной логикой сортировки внутри групп.
- Power Query — мощен для подготовки и трансформации данных (ETL), особенно при больших объёмах; хорошо, когда нужно записать процесс трансформации как шаги, применяемые к входящим данным.
Выбор: если нужен живой отсортированный вид рядом с исходными данными — SORTBY; если нужны преобразования и загрузка в отчёт — Power Query; для одноразовой смены порядка — встроенный «Sort».
Ментальные модели и эвристики
- Модель «представление над данными»: представляйте SORTBY как «слой отображения», который не трогает оригинал.
- Правило одинаковой длины: все by_array должны совпадать по размеру с основным array.
- Явное направление для каждого ключа: при нескольких критериях всегда указывайте sort_order, чтобы избежать неоднозначности.
Роль‑ориентированные чеклисты
Аналитик:
- Проверить размеры array и by_array
- Явно указать sort_order для каждого ключа
- Проверить на #SPILL!, #REF!, #VALUE!
Тот, кто готовит отчёт:
- Разместить вывод в пустой области таблицы
- Добавить вспомогательные столбцы при необходимости
- Использовать FILTER перед SORTBY для поднаборов
Разработчик дашборда:
- Автоматизировать сбор уникальных групп (UNIQUE)
- Зафиксировать порядок ключей сортировки в документе требований
- Тестировать с граничными данными (пустые значения, одинаковые значения)
Критерии приёмки
- Формула возвращает ожидаемое количество строк и столбцов.
- Для одинаковых входных данных результаты устойчивы (при необходимости — добавлен вспомогательный ключ для стабильного порядка).
- Нет ошибок (#SPILL!, #REF!, #VALUE!) при тестовом запуске на реальных данных.
- Диапазон вывода не перезаписывает важные данные.
Тестовые сценарии и приёмы проверки
- Базовый тест: обычные данные без пустых ячеек — ожидаемая сортировка.
- Несовпадение длины by_array — должен быть #VALUE!.
- Объединённый ключ (B2:C16) — должен быть #REF!.
- Занятое место вывода — #SPILL!.
- Равные значения по ключам — проверьте стабильность (если важна, добавьте порядковый ключ).
Когда SORTBY не подойдёт — контрпримеры
- Нужна агрегация (суммы/средние) по группам — лучше PivotTable или Power Query.
- Объём данных очень большой и требуется одна оптимизированная ETL‑операция — Power Query/SQL более эффективны.
- Требуется фиксированная (не динамическая) копия отсортированных данных для отправки другому пользователю — может потребоваться копирование и вставка значений (Paste Values).
SOP: быстрое руководство по созданию надёжного представления SORTBY
- Скопируйте структуру таблицы в пустую область листа для вывода.
- Убедитесь, что array и все by_array имеют одинаковое количество строк.
- Укажите явные sort_order (1 или -1) для всех by_array.
- Протестируйте на крайних случаях (пустые значения, дубликаты, строки в разном порядке).
- Если планируете совместное использование — зафиксируйте логику сортировки в документации отчёта.
Совместимость и переход от старых решений
- Для пользователей старых версий Excel (без динамических массивов) SORTBY может быть недоступен. В таких случаях используйте комбинации INDEX/MATCH/SMALL/LARGE или Power Query.
- При миграции отчётов от ручной сортировки к SORTBY: сначала создайте в рабочем листе копию текущей логики, затем замените её на формулы SORTBY и прогоните тесты на равенство результатов.
Глоссарий — однострочные определения
- array — основной диапазон, который будет возвращён и отсортирован.
- by_array — диапазон, по которому выполняется сортировка.
- sort_order — направление сортировки: 1 = возрастание, -1 = убывание.
- spill — поведение динамических массивов, когда результат «выплёскивается» в соседние ячейки.
Быстрый чек-лист устранения ошибок
- Если #SPILL! — очистите диапазон справа/внизу.
- Если #REF! — проверьте, не объединяли ли вы несколько столбцов в by_array.
- Если #VALUE! — проверьте длины массивов и корректность sort_order.
Короткое резюме
SORTBY — лёгкий способ создать отдельные, динамические и многоуровневые представления данных в Excel без изменения исходного набора. Она отлично подходит для интерактивных отчётов и аналитики, но не заменяет инструменты агрегации и ETL в случаях сложной подготовки данных.
Примечания
- Всегда указывайте sort_order при нескольких критериях.
- Убедитесь, что место для вывода массива свободно.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone