Сортировка формулой
Если вам нужно отсортировать список, то к вашим услугам куча способов, самый простой из которых — кнопки сортировки на вкладке или в меню Данные (Data — Sort). Бывают, однако, ситуации, когда сортировку списка нужно делать автоматически, т.е. формулами. Такое может потребоваться, например, при формировании данных для выпадающего списка, при вычислении данных для диаграмм и т.д. Как же «на лету» сортировать список формулой?
Способ 1. Числовые данные
Если список содержит только числовую информацию, то его сортировку можно легко сделать с помощью функций НАИМЕНЬШИЙ (SMALL) и СТРОКА (ROW):
Функция НАИМЕНЬШИЙ (SMALL) выдергивает из массива (столбец А) n-й по счету наименьший элемент. Т.е. НАИМЕНЬШИЙ(A:A;1) — это самое маленькое число из столбца, НАИМЕНЬШИЙ(А:А;2) — второе по счету наименьшее и т.д.
Функция СТРОКА (ROW) выдает порядковый номер строки для указанной ячейки, т.е. СТРОКА(А1)=1, СТРОКА(A2)=2 и т.д. В данном случае она используется просто как генератор последовательности чисел n=1,2,3… для нашего отсортированного списка. С тем же успехом можно было сделать дополнительный столбец, заполнить его вручную числовой последовательностью 1,2,3… и ссылаться на него вместо функции СТРОКА.
Способ 2. Текстовый список и обычные формулы
Если в списке не числа, а текст, то функция НАИМЕНЬШИЙ (SMALL) уже не сработает, поэтому придется пойти другим, чуть более длинным, путем.
Сначала добавим служебный столбец с формулой, где будет вычисляться порядковый номер каждого имени в будущем отсортированном списке с помощью функции СЧЁТЕСЛИ (COUNTIF):
В английской версии это будет:
=COUNTIF(A:A,»<«&A1)+COUNTIF($A$1:A1,»=»&A1)
Первое слагаемое — это функция подсчета количества ячеек, которые меньше текущей. Второе — подстраховка на случай, если какое-либо имя встречается больше одного раза. Тогда они будут иметь не одинаковые, а последовательно возрастающие номера.
Теперь полученные номера надо расставить последовательно по возрастанию. Для этого можно использовать функцию НАИМЕНЬШИЙ (SMALL) из первого способа:
Ну, и наконец, осталось просто вытащить из списка имена по их номерам. Для этого можно использовать такую формулу:
Функция ПОИСКПОЗ (MATCH) ищет в столбце В нужный порядковый номер (1, 2, 3 и т.д.) и выдает, по сути, номер строки, где находится это число. Функция ИНДЕКС (INDEX) вытаскивает из столбца А имя по этому номеру строки.
Способ 3. Формула массива
Этот способ представляет собой, по сути, тот же алгоритм расстановки, что и в Cпособе-2, но реализованный формулой массива. Для упрощения формулы диапазону ячеек С1:С10 было дано имя List (выделить ячейки, нажать Ctrl+F3 и кнопку Создать):
В ячейку Е1 копируем нашу формулу:
=ИНДЕКС(List; ПОИСКПОЗ(НАИМЕНЬШИЙ(СЧЁТЕСЛИ(List; «<«&List); СТРОКА(1:1)); СЧЁТЕСЛИ(List; «<«&List); 0))
Или в англоязычной версии:
=INDEX(List, MATCH(SMALL(COUNTIF(List, «<«&List), ROW(1:1)), COUNTIF(List, «<«&List), 0))
и нажимаем Ctrl+Shift+Enter, чтобы ввести ее как формулу массива. Потом полученную формулу можно скопировать вниз на всю длину списка.
Если нужно, чтобы формула учитывала не фиксированный диапазон, а могла подстраиваться при дописывании новых элементов к списку, то нужно будет слегка изменить стратегию.
Во-первых, диапазон List нужно будет задать динамически. Для этого при создании нужно указать не фиксированный диапазон C3:C10, а специальную формулу, которая будет ссылаться на все имеющиеся значения независимо от их количества. Нажмите Alt+F3 или откройте вкладку Формулы — Диспетчер имен (Formulas — Name Manager), создайте новое имя и в поле Ссылка (Reference) впишите вот такую формулу (я предполагаю, что диапазон сортируемых данных начинается с ячейки C1):
=СМЕЩ(C1;0;0;СЧЁТЗ(C1:C1000);1)
=OFFSET(C1,0,0,СЧЁТЗ(C1:C1000),1)
Во-вторых, вышеописанную формулу массива нужно будет протянуть вниз с запасом — с расчетом на вводимые в будущем дополнительные данные. При этом формула массива начнет выдавать ошибку #ЧИСЛО на незаполненных пока ячейках. Чтобы ее перехватить, можно использовать функцию ЕСЛИОШИБКА, которую нужно дописать «вокруг» нашей формулы массива:
=ЕСЛИОШИБКА(ИНДЕКС(List; ПОИСКПОЗ(НАИМЕНЬШИЙ(СЧЁТЕСЛИ(List; «<«&List); СТРОКА(1:1)); СЧЁТЕСЛИ(List; «<«&List); 0));»»)
=IFERROR(NDEX(List, MATCH(SMALL(COUNTIF(List, «<«&List), ROW(1:1)), COUNTIF(List, «<«&List), 0));»»)
Она перехватывает ошибку #ЧИСЛО и выводит вместо нее пустоту (пустые кавычки).
Ссылки по теме:
- Сортировка диапазона по цвету
- Что такое формулы массива и зачем они нужны
- Сортировка функцией СОРТ и динамические массивы в новом Office 365
Сортировка данных в Excel – инструмент для представления информации в удобном для пользователя виде.
Числовые значения можно отсортировать по возрастанию и убыванию, текстовые – по алфавиту и в обратном порядке. Доступны варианты – по цвету и шрифту, в произвольном порядке, по нескольким условиям. Сортируются столбцы и строки.
Порядок сортировки в Excel
Существует два способа открыть меню сортировки:
- Щелкнуть правой кнопкой мыши по таблице. Выбрать «Сортировку» и способ.
- Открыть вкладку «Данные» — диалоговое окно «Сортировка».
Часто используемые методы сортировки представлены одной кнопкой на панели задач:
Сортировка таблицы по отдельному столбцу:
- Чтобы программа правильно выполнила задачу, выделяем нужный столбец в диапазоне данных.
- Далее действуем в зависимости от поставленной задачи. Если нужно выполнить простую сортировку по возрастанию/убыванию (алфавиту или обратно), то достаточно нажать соответствующую кнопку на панели задач. Когда диапазон содержит более одного столбца, то Excel открывает диалоговое окно вида:
Чтобы сохранилось соответствие значений в строках, выбираем действие «автоматически расширить выделенный диапазон». В противном случае отсортируется только выделенный столбец – структура таблицы нарушится.
Если выделить всю таблицу и выполнить сортировку, то отсортируется первый столбец. Данные в строках станут в соответствии с положением значений в первом столбце.
Сортировка по цвету ячейки и по шрифту
Программа Excel предоставляет пользователю богатые возможности форматирования. Следовательно, можно оперировать разными форматами.
Сделаем в учебной таблице столбец «Итог» и «зальем» ячейки со значениями разными оттенками. Выполним сортировку по цвету:
- Выделяем столбец – правая кнопка мыши – «Сортировка».
- Из предложенного списка выбираем «Сначала ячейки с выделенным цветом».
- Соглашаемся «автоматически расширить диапазон».
Программа отсортировала ячейки по акцентам. Пользователь может самостоятельно выбрать порядок сортировки цвета. Для этого в списке возможностей инструмента выбираем «Настраиваемую сортировку».
В открывшемся окне вводим необходимые параметры:
Здесь можно выбрать порядок представления разных по цвету ячеек.
По такому же принципу сортируются данные по шрифту.
Сортировка в Excel по нескольким столбцам
Как задать порядок вторичной сортировки в Excel? Для решения этой задачи нужно задать несколько условий сортировки.
- Открываем меню «Настраиваемая сортировка». Назначаем первый критерий.
- Нажимаем кнопку «Добавить уровень».
- Появляются окошки для введения данных следующего условия сортировки. Заполняем их.
Программа позволяет добавить сразу несколько критериев чтобы выполнить сортировку в особом порядке.
Сортировка строк в Excel
По умолчанию сортируются данные по столбцам. Как осуществить сортировку по строкам в Excel:
- В диалоговом окне «Настраиваемой сортировки» нажать кнопку «Параметры».
- В открывшемся меню выбрать «Столбцы диапазона».
- Нажать ОК. В окне «Сортировки» появятся поля для заполнения условий по строкам.
Таким образом выполняется сортировка таблицы в Excel по нескольким параметрам.
Случайная сортировка в Excel
Встроенные параметры сортировки не позволяют расположить данные в столбце случайным образом. С этой задачей справится функция СЛЧИС.
Например, нужно расположить в случайном порядке набор неких чисел.
Ставим курсор в соседнюю ячейку (слева-справа, не важно). В строку формул вводим СЛЧИС(). Жмем Enter. Копируем формулу на весь столбец – получаем набор случайных чисел.
Теперь отсортируем полученный столбец по возрастанию /убыванию – значения в исходном диапазоне автоматически расположатся в случайном порядке.
Динамическая сортировка таблицы в MS Excel
Если применить к таблице стандартную сортировку, то при изменении данных она не будет актуальной. Нужно сделать так, чтобы значения сортировались автоматически. Используем формулы.
- Есть набор простых чисел, которые нужно отсортировать по возрастанию.
- Ставим курсор в соседнюю ячейку и вводим формулу: =НАИМЕНЬШИЙ(A:A;СТРОКА(A1)). Именно так. В качестве диапазона указываем весь столбец. А в качестве коэффициента – функцию СТРОКА со ссылкой на первую ячейку.
- Изменим в исходном диапазоне цифру 7 на 25 – «сортировка» по возрастанию тоже изменится.
Если необходимо сделать динамическую сортировку по убыванию, используем функцию НАИБОЛЬШИЙ.
Для динамической сортировки текстовых значений понадобятся формулы массива.
- Исходные данные – перечень неких названий в произвольном порядке. В нашем примере – список фруктов.
- Выделяем столбец и даем ему имя «Фрукты». Для этого в поле имен, что находится возле строки формул вводим нужное нам имя для присвоения его к выделенному диапазону ячеек.
- В соседней ячейке (в примере – в В5) пишем формулу: Так как перед нами формула массива, нажимаем сочетание Ctrl + Shift + Enter. Размножаем формулу на весь столбец.
- Если в исходный столбец будут добавляться строки, то вводим чуть модифицированную формулу: Добавим в диапазон «фрукты» еще одно значение «помело» и проверим:
Скачать формулы сортировки данных в Excel
Впоследствии при добавлении данных в таблицу процесс сортирования будет выполняться автоматически.
Как сортировать в Excel знают практически все. Но очень часто необходима именно сортировка формулой, поскольку результаты вычисления участвуют затем в последующих расчетах. Как это сделать?
Для такой сортировки стоит выделить два случая:
— Сортировка числовых значений
— Сортировка текста
Сортировка формулой числовых значений
В серых столбцах показано, какие формулы надо применять. Рассмотрим немного подробнее:
1. Сперва отсортируем именно числа. Для этого применяется хорошая комбинация функций =НАИМЕНЬШИЙ(A:A;СТРОКА()-1), где функция НАИМЕНЬШИЙ() ищет значения в столбце А и возвращает нужное число по счету (т.е. если после точки с запятой поставить 1, вернет самое меньшее — первое значение в массиве). Мы же используем нумерацию строк, функция СТРОКА() считает как раз номер строки и вычитаем единицу, поскольку массив начался со второй строки.
=НАИМЕНЬШИЙ(A:A;СТРОКА()-1)
2. Для каждого числа проставим соответствующие фамилии функцией =ВПР() в столбце Е. Для простоты понимания скачайте пример, а для закрепления сделайте ВПР для имен.
Сортировка формулой текста
С текстом функция НАИМЕНЬШИЙ() уже не работает. Здесь лучше всего применить конструкцию с функцией =СЧЁТЕСЛИ()
=СЧЁТЕСЛИ($H$1:$H$5;"<"&H2)+СЧЁТЕСЛИ($H$2:H2;"="&H2)
Первое выражение ищет в диапазоне $B$8:$B$12 все значения не равные Фамилии в этой строке. Второе выражение приплюсовывает значение при нахождении значений равных нужной фамилии.
Обращаю внимание, что во втором выражении диапазон изменяется (т.е. закреплена только первая ячейка), в следующих строках диапазон будет расширяться.
Т.е. мы нашли порядковые номера каждой фамилии. Столбец J.
Проставлем порядковые номера от 1 и дальше в столбце K.
Теперь заВПРим соответствующие значения в столбце L.
Ничего сложного быть не должно, скачайте файл пример:
Пример для двух вариантов
Если будут вопросы, смело пишите в комментарии.
Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel для iPad Excel для iPhone Excel для планшетов с Android Excel для телефонов с Android Еще…Меньше
Функция СОРТ сортирует содержимое диапазона или массива.
В этом примере используется отдельная сортировка по регионам, продавцам и продуктам с помощью формулы =СОРТ(A2:А17), скопированной в ячейки F2, H2 и J2.
Функция СОРТ возвращает отсортированный массив элементов в массиве. Возвращаемый массив имеет ту же форму, что и предоставленный аргумент массива.
=СОРТ(массив;[индекс_сортировки];[порядок_сортировки];[по_столбцу])
Аргумент |
Описание |
---|---|
массив Обязательный |
Диапазон или массив для сортировки |
[индекс_сортировки] Необязательный |
Число, указывающее строку или столбец, по которым нужно выполнить сортировку. |
[порядок_сортировки] Необязательный |
Число, указывающее нужный порядок сортировки: 1 для сортировки по возрастанию (по умолчанию), -1 для сортировки по убыванию |
[по_столбцу] Необязательный |
Логическое значение, указывающее нужное направление сортировки: ЛОЖЬ для сортировки по строкам (по умолчанию), ИСТИНА для сортировки по столбцам |
Примечания:
-
Если аргумент «индекс_сортировки» не указан, предполагается строка 1 или столбец 1. Если не указан порядок сортировки, применяется сортировка по возрастанию. По умолчанию Excel выполняет сортировку по строкам, а сортировка по столбцам применяется, если аргументу «по_столбцу» присвоено значение ИСТИНА. Если аргументу «по_столбцу» присвоено значение ЛОЖЬ или он отсутствует, Excel выполняет сортировку по строкам.
-
Функция СОРТ предназначена для сортировки данных в массиве. Если вы хотите отсортировать данные в сетке, лучше использовать функцию СОРТПО, поскольку она удобнее. Функция СОРТПО учитывает добавления или удаления столбцов, так как она ссылается на диапазон, а функция СОРТ ссылается на номер индекса столбца.
-
Массив может рассматриваться как строка со значениями, столбец со значениями или комбинация строк и столбцов со значениями. В приведенном выше примере исходным массивом для формулы СОРТ является диапазон A5:D20.
-
Функция СОРТ возвращает массив, который будет рассеиваться, если это будет конечным результатом формулы. Это означает, что Excel будет динамически создавать соответствующий по размеру диапазон массива при нажатии клавиши Enter. Если ваши вспомогательные данные хранятся в таблице Excel, тогда массив будет автоматически изменять размер при добавлении и удалении данных из диапазона массива, если вы используете Структурированные ссылки. Дополнительные сведения см. в статье Поведение рассеянного массива.
-
Приложение Excel ограничило поддержку динамических массивов в операциях между книгами, и этот сценарий поддерживается, только если открыты обе книги. Если закрыть исходную книгу, все связанные формулы динамического массива вернут ошибку #ССЫЛКА! после обновления.
Примеры
Сортировка диапазона значений по убыванию.
Совместное использование функций СОРТ и ФИЛЬТР, чтобы отсортировать диапазон по возрастанию и ограничить его значениями, превышающими 5000.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
См. также
Функция ФИЛЬТР
Функция СЛУЧМАССИВ
Функция ПОСЛЕДОВ
Функция СОРТПО
Функция УНИК
Ошибки #ПЕРЕНОС! в Excel
Динамические массивы и поведение массива с переносом
Оператор неявного пересечения: @
Нужна дополнительная помощь?
Содержание
- Способ 1: Кнопки быстрой сортировки
- Способ 2: Настраиваемая сортировка
- Способ 3: Формула сортировки
- Шаг 1: Создание вспомогательной формулы
- Шаг 2: Создание формулы сортировки
- Шаг 3: Модернизации формулы для повторных названий
- Вопросы и ответы
Способ 1: Кнопки быстрой сортировки
В Excel есть кнопки, отвечающие за быструю сортировку выделенного массива данных. Их использование станет оптимальным в тех ситуациях, когда нужно обработать ячейки всего один раз, предварительно выделив необходимые.
- Зажмите левую кнопку мыши и выделите все значения, которые далее будут подвергаться сортировке.
- На вкладке «Главная» откройте выпадающее меню «Редактирование».
- В нем используйте блок «Сортировка и фильтрация», выбрав порядок, в котором хотите расставить значения.
- Если появляется оповещение об обнаружении данных вне диапазона, потребуется выбрать, расширять его или сортировать только в пределах указанного выделения. Рассмотрим сначала первый вариант.
- При его использовании соседние ячейки, зависящие от общей таблицы, подстраиваются под порядок расположения текста, то есть если напротив ячейки «Август» находится значение «27», оно и остается напротив этого же слова.
- Второй вариант — «Сортировать в пределах указанного выделения».
- Так перемещается только указанный текст, а ячейки напротив него остаются нетронутыми. Это означает, что произойдет смещение данных, если раньше между ними была какая-то связь.
Если вы еще не решили, хотите сортировать только указанный диапазон или нужно захватывать соседние ячейки, проверьте каждый вариант, отменяя его нажатием горячей клавиши Ctrl + Z. Так проще определиться с изменениями, происходящими в таблице.
Способ 2: Настраиваемая сортировка
Настраиваемая сортировка позволяет более гибко выстроить расположение элементов в таблице, учитывая несколько уровней и разных диапазонов данных. Для ее создания используется специальное меню, которое и возьмем во внимание далее.
- Рекомендуем сразу выделить всю таблицу, если помимо сортировки по алфавиту вы желаете добавить еще несколько уровней.
- Затем в том же разделе «Редактирование» выбирайте пункт «Настраиваемая сортировка».
- В выпадающем меню «Сортировать по» укажите столбец, который затрагивает сортировка.
- В качестве режима сортировки выбирается тип «Значения ячеек».
- Осталось указать только порядок «От А до Я» или «От Я до А».
- Если надо сортировать и другие столбцы, добавьте их в качестве уровней и выполните такую же настройку.
- Вернитесь к таблице и убедитесь в том, что все действия выполнены правильно.
Способ 3: Формула сортировки
Недостатки предыдущих методов состоят в том, что они сортируют только единоразово, а динамически при внесении изменений таблица не меняется. Если вас не устраивает такой вариант, понадобится вручную создать формулу сортировки, которая при добавлении или удалении элементов автоматически пересчитает их и поставит в нужном порядке. Формул будет несколько, поскольку пока разработчики не добавили специальную функцию, которая позволяла бы обойтись без применения вспомогательных подсчетов. Весь дальнейший процесс состоит из нескольких этапов для правильного понимания принципа сортировки по алфавиту.
Шаг 1: Создание вспомогательной формулы
Основная задача – создать вспомогательную формулу, которая анализирует слова в ячейках и определяет их порядковый номер в будущем отсортированном по алфавиту списке. Это происходит при сравнении встроенными алгоритмами Excel, работающими по принципу анализа кодировки. Детально разбирать работу этой формулы не будем, только покажем ее создание.
- Для работы с будущими вычислениями понадобится создать из ячеек группу, для чего их необходимо выделить и в специально отведенном поле сверху задать новое название.
- Теперь диапазон выделенных ячеек имеет собственное имя, отвечающее за его содержимое, — в нашем случае это фрукты. Если вводите несколько слов в названии, не ставьте пробел, а используйте вместо него нижнее подчеркивание: «(пример_текста)».
- В новой клетке создадим формулу
СЧЁТЕСЛИ
, которая считает ячейки, удовлетворяющие условие. В качестве диапазона указывайте созданную только что группу, затем первую ячейку для сравнения. В итоге первоначальный вид формулы таков:=СЧЁТЕСЛИ(Фрукты;A1)
. - Сейчас результатом этой формулы будет «1», поскольку ее запись не совсем верна для будущих расчетов, поэтому добавьте выражение
"<="&
перед номером первой ячейки. - Растяните формулу, зажав край ячейки, до конца будущего списка для сортировки.
- Переименуйте диапазон с числами в группу — это понадобится при составлении следующей формулы.
Шаг 2: Создание формулы сортировки
Вспомогательная формула готова и работает правильно, поэтому можно приступить к созданию основной функции, которая и будет заниматься сортировкой благодаря уже существующему автоматическому определителю позиций.
- В новой ячейке начните вводить
=ПОИСКПОЗ(СТРОКА(A1)
. Эта формула отвечает за поиск позиции строки, из-за чего и следует указать аргумент «A1». - Далее для простоты добавления именных диапазонов перейдите в «Формулы», разверните меню «Определенные имена» и выберите «Использовать в формуле».
- Добавьте диапазон со вспомогательной формулой и укажите для него тип сопоставления «Точное совпадение» в выпадающем списке, который появится после добавления «;».
- Завершите создание формулы, обернув ее в функцию
ИНДЕКС
, которая будет работать с массивом названий. - Проверьте результат и затем растяните формулу так, как это уже было показано выше.
- Теперь вы получите корректно работающий динамический список, отсортированный по алфавиту.
Для упрощения понимания отдельно предоставляем полную формулу:
=(ИНДЕКС(Фрукты;ПОИСКПОЗ(СТРОКА(A1);номер_слова;0)))
, вам же останется только отредактировать ее под свои цели и растянуть на необходимый диапазон ячеек.
Шаг 3: Модернизации формулы для повторных названий
Единственный недостаток созданной только что формулы – некорректная ее работа при наличии повторных названий, что вы можете заметить на представленном далее скриншоте. Это связано с тем, что вспомогательная функция не в состоянии правильно обработать повторяющиеся слова, поэтому ее придется немного усовершенствовать, если вы хотите использовать в списке повторы.
- Откройте вспомогательную формулу и уберите знак «<«, чтобы
СЧЁТЕСЛИ
работал только при условии равенства. - Добавьте вторую часть —
+СЧЁТЕСЛИ($A$1:A1;A1)
, позволяющую нормально записывать одинаковые слова в последовательном порядке. - Снова растяните формулу, чтобы она изменилась на всех ячейках.
- Добавьте в список повторяющиеся названия, чтобы проверить их нормальное отображение.
Еще статьи по данной теме: