Сортировка данных в 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: Быстрая сортировка в Excel
Иногда требуется максимально быстро отсортировать данные в столбце по возрастанию чисел, убыванию или по алфавиту. Для этого идеально подойдут кнопки быстрой сортировки, предназначенные как раз для выполнения поставленной задачи.
-
Выделите зажатой левой кнопкой мыши столбец с данными и вызовите меню «Редактирование».
-
Откройте список «Сортировка и фильтр» и выберите подходящий для вас вариант упорядочения. С числами это по возрастанию или убыванию, а для текста – по алфавиту и в обратную сторону.
-
Если вы выделили не все ячейки в столбце, появится окно с предложением расширить диапазон. Сделайте это, если за пределами выделения тоже находятся значения, которые нужно сортировать. Укажите сортировку в пределах данного диапазона, если за ним находятся исключительно заголовки.
-
Изменения вступают в силу сразу же. Нажмите Ctrl + Z для отмены действия, если что-то выполнено неправильно.
Обратите внимание на то, что сортировка сбивается после внесения любых изменений в клетках. Придется снова обращаться к тем же самым кнопкам, упорядочив уже новый массив с данными.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Вариант 2: Настраиваемая сортировка
Более продвинутый вариант, позволяющий задать сразу несколько условий упорядочения, – это настраиваемая сортировка, выполняющаяся через соответствующее окно. Давайте разберем сортировку по двум разным параметрам:
-
Вы можете не выделять заранее столбец, если для него задано название. Вызовите то же меню редактирования, но на этот раз нажмите по «Настраиваемая сортировка».
-
Выберите вариант с расширением или сохранением диапазона, если предварительно выделили столбец.
-
Вы увидите первый уровень сортировки, который и стоит настроить с самого начала.
-
Выберите столбец для сортировки из первого выпадающего списка.
-
Далее укажите вариант сортировки. Это может быть значение, цвет шрифта или ячейки, знаки условного форматирования.
-
В завершение укажите, в каком порядке необходимо отсортировать данные.
-
Если затем нужно применить еще один вариант сортировки, добавьте уровень и настройте его должным образом.
-
После применения вернитесь к таблице и убедитесь в том, что действия произведены верно. Учитывайте, что в этом случае сортировка тоже собьется, если вы внесете изменения в любой ячейке.
Вариант 3: Функция НАИБОЛЬШИЙ или НАИМЕНЬШИЙ
Последний вариант – единственный динамический, то есть после внесения изменений в клетках сортировка автоматически перестроится и ее последовательность будет правильной. Как вы уже поняли, для этого понадобится использовать функцию НАИБОЛЬШИЙ или НАИМЕНЬШИЙ.
-
В пустом столбце выберите первую ячейку для сортировки (желательно, чтобы она находилась параллельно ячейке с существующего столбца). Вызовите одну из указанных функций, отталкиваясь от необходимого вам типа упорядочения.
-
Далее в скобках укажите (C:C;СТРОКА(C1)), поменяв буквы на номер столбца сортировки.
-
Растяните функцию, зажав левую кнопку мыши в правой нижней точке ячейки и потянув вниз. Вы увидите, что данные указанного столбца перенесены параллельно, но соблюдена сортировка по возрастанию или убыванию. При этом исходные данные остаются в таком же хаотичном порядке, как были и раньше.
Теперь в исходном столбце вы можете вносить любые изменения для значений, а параллельные данные в отсортированном столбце поменяются в зависимости от указанных данных, но порядок все равно будет правильным.
Используйте любой из вариантов сортировки по надобности, но учитывайте, что динамически меняется только способ с применением функции. Конечно, он потребует создания дополнительного столбца, но в некоторых случаях это является оптимальным решением. Только не забудьте дать название столбцу, чтобы все пользователи таблицы понимали, для чего он нужен на листе.
boidak Пользователь Сообщений: 1 |
Информация в 600 ячеек, в нескольких столбцах, хочу первый столбец отсортировать от мин до макс, как сделать так чтобы остальные столбцы соответсвовали первому? в поиске не нашел, заранее спасибо! |
1xs Пользователь Сообщений: 65 |
Выделяете все свои столбцы с данными и сортируете по первому столбцу. |
vikttur Пользователь Сообщений: 47199 |
Выделить данные, Данные-Фильтр или Данные-Сортировка. |
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
А зачем вообще выделять? Если правее сортируемого диапазона нет никаких данных,- активируем любую ячейку первого столбца и жмём кнопочку сортировки. |
{quote}{login=Юрий М}{date=23.04.2012 10:52}{thema=}{post}А зачем вообще выделять?..{/post}{/quote} |
|
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
#6 23.04.2012 11:10:52 Если «специалист» — тады беда |
Помогаю со студенческими работами здесь
Как привязать запуск макроса к изменению ячейки?
Подскажите пожалуйста, как привязать запуск макроса к изменению ячейки, и есть ли список событий к…
Хранимая процедура сортировки числового поля для сортировки по алфавиту
В таблице есть поле Name , в котором, собственно, и хранятся типы товаров, и есть поле Ordinal c…
Составить блок – схемы для шейкер- сортировки и сортировки Шелла
Доброго времени суток, очень нужна ваша помощь в решении данной проблемы, буду бесконечно…
Создал код для сортировки медотом пузырька цикл идёт, а сортировки нет
def check(l):
a = 0
while True:
b = a + 1
if b == len(l):
…
Искать еще темы с ответами
Или воспользуйтесь поиском по форуму:
1
Здесь можно получить ответы на вопросы по Microsoft Excel | 57593 | 471110 |
8 Окт 2018 14:32:16 |
|
44519 | 357828 |
29 Янв 2017 17:28:40 |
||
Лучшие избранные темы с основного форума | 14 | 80 |
28 Июн 2018 15:25:11 |
|
Если вы — счастливый обладатель Mac 😉 | 217 | 1059 |
21 Сен 2018 06:21:34 |
|
Раздел для размещения платных вопросов, проектов и задач и поиска исполнителей для них. | 2097 | 13349 |
8 Окт 2018 14:23:01 |
|
Если Вы скачали или приобрели надстройку PLEX для Microsoft Excel и у Вас есть вопросы или пожелания — Вам сюда. | 309 | 1584 |
5 Окт 2018 20:03:21 |
|
807 | 11609 |
8 Окт 2018 13:27:19 |
||
Обсуждение функционала, правил и т.д. | 269 | 3465 |
8 Окт 2018 14:23:08 |
|
Сейчас на форуме (гостей: 1980, пользователей: 33, из них скрытых: 2) , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
Сегодня отмечают день рождения (59), (28), (29), (23)
Всего зарегистрированных пользователей: 83066
Приняло участие в обсуждении: 31827
Всего тем: 105822
Сортировка данных в Excel это очень полезная функция, но пользоваться ней следует с осторожностью. Если большая таблица содержит сложные формулы и функции, то операцию сортировки лучше выполнять на копии этой таблицы.
Во-первых, в формулах и функциях может нарушиться адресность в ссылках и тогда результаты их вычислений будут ошибочны. Во-вторых, после многократных сортировок можно перетасовать данные таблицы так, что уже сложно будет вернуться к изначальному ее виду. В третьих, если таблица содержит объединенные ячейки, то следует их аккуратно разъединить, так как для сортировки такой формат является не приемлемым.
Какими средствами располагает Excel для сортировки данных? Чтобы дать полный ответ на этот вопрос рассмотрим его на конкретных примерах.
Подготовка таблицы для правильной и безопасной сортировки данных:
- Выделяем и копируем всю таблицу.
- На другом чистом листе (например, Лист2)щелкаем правой кнопкой мышки по ячейке A1. Из контекстного меню выбираем опцию: «Специальная вставка». В параметрах отмечаем «значения» и нажимаем ОК.
Теперь наша таблица не содержит формул, а только результаты их вычисления. Так же разъединены объединенные ячейки. Осталось убрать лишний текст в заголовках и таблица готова для безопасной сортировки.
Чтобы отсортировать всю таблицу относительно одного столбца выполните следующее:
- Выделите столбцы листа, которые охватывает исходная таблица.
- Выберите инструмент на закладке: «Данные»-«Сортировка».
- В появившимся окне укажите параметры сортировки. В первую очередь поставьте галочку напротив: «Мои данные содержат заголовки столбцов», а потом указываем следующие параметры: «Столбец» – Чистая прибыль; «Сортировка» – Значения; «Порядок» – По убыванию. И нажмите ОК.
Данные отсортированные по всей таблице относительно столбца «Чистая прибыль».
Как в Excel сделать сортировку в столбце
Теперь отсортируем только один столбец без привязки к другим столбцам и целой таблицы:
- Выделите диапазон значений столбца который следует отсортировать, например «Расход» (в данном случаи это диапазон E1:E11).
- Щелкните правой кнопкой мышки по выделенному столбцу. В контекстном меню выберите опцию «Сортировка»-«от минимального к максимальному»
- Появится диалоговое окно «Обнаруженные данные вне указанного диапазона». По умолчанию там активна опция «автоматически расширять выделенный диапазон». Программа пытается охватить все столбцы и выполнить сортировку как в предыдущем примере. Но в этот раз выберите опцию «сортировать в пределах указанного диапазона». И нажмите ОК.
Столбец отсортирован независимо от других столбцов таблицы.
Сортировка по цвету ячейки в Excel
При копировании таблицы на отдельный лист мы переносим только ее значения с помощью специальной вставки. Но возможности сортировки позволяют нам сортировать не только по значениям, а даже по цветам шрифта или цветам ячеек. Поэтому нам нужно еще переносить и форматы данных. Для этого:
- Вернемся к нашей исходной таблице на Лист1 и снова полностью выделим ее, чтобы скопировать.
- Правой кнопкой мышки щелкните по ячейке A1 на копии таблицы на третьем листе (Лист3) и выберите опцию «Специальная вставка»-«значения».
- Повторно делаем щелчок правой кнопкой мышки по ячейе A1 на листе 3 и повторно выберем «Специальная вставка» только на этот раз указываем «форматы». Так мы получим таблицу без формул но со значениями и форматами
- Разъедините все объединенные ячейки (если такие присутствуют).
Теперь копия таблицы содержит значения и форматы. Выполним сортировку по цветам:
- Выделите таблицу и выберите инструмент «Данные»-«Сортировка».
- В параметрах сортировки снова отмечаем галочкой «Мои данные содержат заголовки столбцов» и указываем: «Столбец» – Чистая прибыль; «Сортировка» – Цвет ячейки; «Порядок» – красный, сверху. И нажмите ОК.
Сверху у нас теперь наихудшие показатели по чистой прибыли, которые имеют наихудшие показатели.
Примечание. Дальше можно выделить в этой таблице диапазон A4:F12 и повторно выполнить второй пункт этого раздела, только указать розовый сверху. Таким образом в первую очередь пойдут ячейки с цветом, а после обычные.
Приветствую!
Появилась необходимость поработать с очередным «небольшим» реестром.
Загвоздка в нём следующая: как известно, для сортировки ячейки должны быть «одинакового размера».
В этом же архиве в столбце с 14-го по 19-й (наименование товаров — сумма) есть контракты с множеством товаров и, если отменить группировку ячеек в документе, то строки с заполненными 14-19-ми ячейками становятся пустыми в остальных полях.
Собственно вопрос — как сделать так, чтобы при отмене группировки ячеек, поля, ставшие пустыми, заполнялись данными из изначального источника, т.е получается чтобы ячейки с 14-й по 19-ю были разные, а остальные — одинаковые.
Не очень прозрачно написал, но пример реестра прикладываю — с ним будет понятней о чём я
Сортировка в Excel — инструмент, с помощью которого информацию из таблицы организовывают в необходимом порядке. Данные можно сортировать по алфавиту, по возрастанию и убыванию чисел или по любым пользовательским критериям — например, по должностям сотрудников.
- Как сделать сортировку данных по одному критерию
- Как сделать сортировку по нескольким критериям
- Как сделать пользовательскую сортировку
Сортировка необходима, когда информация в таблице располагается хаотично. Пользователь выбирает столбец и тип сортировки — Excel упорядочивает информацию таблицы по этим критериям.
Разберём на примере.
Воспользуемся отчётом небольшого автосалона. В таблице собрана информация о продажах: характеристики авто, их цена, дата продажи и ответственные менеджеры. Данные расположены беспорядочно.
Скриншот: Excel / Skillbox Media
Для примера отсортируем данные по возрастанию цены автомобилей, по дате их продажи и по фамилиям менеджеров.
Сортируем данные по возрастанию цены авто. Выделяем любую ячейку в столбце, данные которого нужно отсортировать. В нашем случае — любую ячейку столбца «Цена, руб.».
Скриншот: Excel / Skillbox Media
На вкладке «Главная» нажимаем кнопку «Сортировка и фильтр».
Скриншот: Excel / Skillbox Media
Выбираем нужный тип сортировки — в нашем случае пункт «Сортировка по возрастанию».
Скриншот: Excel / Skillbox Media
Готово — данные таблицы отсортированы по возрастанию цен на автомобили.
Скриншот: Excel / Skillbox Media
Сортируем данные по дате продажи авто. Выделяем любую ячейку столбца «Дата продажи», нажимаем кнопку «Сортировка и фильтр» и выбираем нужный тип сортировки. В нашем случае — пункт «Сортировка от старых к новым».
Скриншот: Excel / Skillbox Media
Готово — данные отсортированы по дате продаж: от более давних к новым.
Скриншот: Excel / Skillbox Media
Сортируем данные по фамилиям менеджеров. Выделяем любую ячейку в столбце «Менеджер», нажимаем кнопку «Сортировка и фильтр» и выбираем нужный тип сортировки. В нашем примере отсортируем по алфавиту — выберем пункт «Сортировка от А до Я».
Скриншот: Excel / Skillbox Media
Готово — данные отсортированы по фамилиям менеджеров.
Скриншот: Excel / Skillbox Media
Выше мы привели три примера сортировки по одному столбцу. Но иногда требуется отсортировать таблицу одновременно по нескольким критериям.
Разберём, как это сделать, на примере.
Допустим, нужно отсортировать первоначальную таблицу отчётности по двум критериям: по возрастанию цены авто и по фамилиям менеджеров.
Выбираем любую ячейку таблицы и нажимаем кнопку «Сортировка» на вкладке «Данные».
Скриншот: Excel / Skillbox Media
В появившемся окне с помощью кнопки «+» добавляем критерии сортировки.
Скриншот: Excel / Skillbox Media
Добавляем критерии в необходимой последовательности: сначала — сортировка по фамилии менеджеров, затем — по возрастанию цен на автомобили, которые они продали.
Для этого нажимаем на стрелки под блоком «Столбец» и выбираем параметр «Менеджер». В пункте «Порядок» оставляем параметр «От А до Я».
Скриншот: Excel / Skillbox Media
Затем снова нажимаем на кнопку «+» и добавляем второй критерий сортировки — «Цена, руб.» → «По возрастанию». Жмём «ОК».
Скриншот: Excel / Skillbox Media
Готово — таблица отсортирована по двум столбцам одновременно.
Скриншот: Excel / Skillbox Media
Выше мы рассмотрели стандартную сортировку: по возрастанию и убыванию, по алфавиту, по дате. Кроме неё, в Excel можно настроить сортировку по критериям, выбранным пользователем.
Функция пригодится, когда нужные критерии не предусмотрены стандартными настройками. Например, если требуется сортировать данные по должностям сотрудников или по названиям отделов. Это называется пользовательской сортировкой.
Схема работы такова:
- Пользователь создаёт новый список для сортировки и вводит значения столбца, который нужно отсортировать, в необходимом порядке.
- Потом сортирует таблицу по стандартному пути с помощью меню сортировки.
Для примера отсортируем нашу таблицу по названиям моделей авто. Создадим новый список для пользовательской сортировки.
В операционной системе macOS это делается так: в верхнем меню нажимаем на вкладку «Excel» и выбираем пункт «Параметры…».
Скриншот: Excel / Skillbox Media
В появившемся окне нажимаем кнопку «Списки».
Скриншот: Excel / Skillbox Media
Затем в правой панели «Пользовательские списки» выбираем пункт «НОВЫЙ СПИСОК», а в левой панели «Элементы списка» вводим элементы списка в нужном порядке.
Скриншот: Excel / Skillbox Media
Элементы списка можно ввести двумя способами:
- Напечатать вручную.
- Импортировать из исходной таблицы и отредактировать.
Пойдём по второму пути. Поставим курсор в строку «Импортировать список из ячеек» и выберем диапазон столбца, значения которого нужно отсортировать. В нашем случае — значения столбца «Марка, модель».
Нажмём кнопку «Импорт».
Скриншот: Excel / Skillbox Media
Excel импортирует все значения столбца, даже дублирующиеся.
Скриншот: Excel / Skillbox Media
Теперь удалим повторяющиеся значения и расположим их в нужном порядке. Для примера сделаем так:
Скриншот: Excel / Skillbox Media
Нажимаем кнопку «Добавить», и список появляется в панели «Пользовательский списки». Закрываем окно.
Скриншот: Excel / Skillbox Media
В операционной системе Windows путь вызова меню «Списки» отличается. Нужно перейти во вкладку «Файл» и выбрать пункты «Параметры» → «Дополнительно» → «Общие» → «Изменить списки». Дальнейшие действия совпадают со схемой, описанной выше.
Теперь отсортируем таблицу по созданному списку. Снова выбираем любую ячейку таблицы и нажимаем кнопку «Сортировка» на вкладке «Данные».
В появившемся окне в блоке «Столбец» выбираем столбец, значения которого нужно отсортировать. В нашем случае — пункт «Марка, модель».
В блоке «Порядок» выбираем созданный список сортировки.
Скриншот: Excel / Skillbox Media
Нажимаем «ОК».
Скриншот: Excel / Skillbox Media
Готово — таблица отсортирована по условиям пользователя. Значения столбца «Марка, модель» расположены в порядке, который мы установили для нового списка.
Скриншот: Excel / Skillbox Media
Сортировка c объединенными ячейками |
||||||||
Ответить |
||||||||
Ответить |
Отсортируем формулами таблицу, состоящую из 2-х столбцов. Сортировку будем производить по одному из столбцов таблицы (решим 2 задачи: сортировка таблицы по числовому и сортировка по текстовому столбцу). Формулы сортировки настроим так, чтобы при добавлении новых данных в исходную таблицу, сортированная таблица изменялась динамически. Это позволит всегда иметь отсортированную таблицу без вмешательства пользователя. Также сделаем двухуровневую сортировку: сначала по числовому, затем (для повторяющихся чисел) — по текстовому столбцу.
Пусть имеется таблица, состоящая из 2-х столбцов. Один столбец – текстовый:
Список фруктов
; а второй — числовой
Объем Продаж
(см.
файл примера
).
Задача1 (Сортировка таблицы по числовому столбцу)
Необходимо отсортировать строки таблицы по содержимому числового столбца (по Объему продаж). Предполагается, что пользователь постоянно заполняет строки таблицы, поэтому необходимо написать формулы с учетом добавляемых значений.
Для наглядности величины значений в столбце
Объем Продаж
выделены с помощью
Условного форматирования
(
). Также желтым выделены повторяющиеся значения.
Примечание
: Задача сортировки отдельного столбца (списка) решена в статьях
Сортированный список (ТЕКСТовые значения)
и
Сортированный список (ЧИСЛОвые значения)
.
Решение1
Если числовой столбец гарантировано не содержит
повторяющихся
значений, то задача решается легко:
-
Числовой столбец отсортировать функцией
НАИБОЛЬШИЙ()
(см. статьюСортированный список (ЧИСЛОвые значения)
);
-
Функцией
ВПР()
или связкой функций
ИНДЕКС()+ПОИСКПОЗ()
выбрать значения из текстового столбца по соответствующему ему числовому значению.
Однако, в реальных задачах числовой столбец может содержать повторы, а так как функция
ВПР()
в случае наличия повторов всегда выбирает только первое значение сверху (см. статью
Функция ВПР() в MS EXCEL
), то этот подход не годится (названия Фруктов будут выведены неправильно).
Поэтому механизм сортировки придется реализовывать по другому.
Создадим для удобства 2
Динамических диапазона
Фрукты
и
Продажи
, которые будут ссылаться на диапазоны ячеек, содержащие значения в соответствующих столбцах исходной таблицы. При добавлении новых строк в таблицу, границы этих динамических диапазонов будут автоматически расширяться.
В столбцах
D
и
E
разместим таблицу, которая будет динамически сортироваться,
В ячейке
Е7
запишем зубодробительную
формулу массива
:
=ИНДЕКС(Продажи; ОКРУГЛ(ОСТАТ(НАИБОЛЬШИЙ( —(СЧЁТЕСЛИ(Продажи;»<«&Продажи)&»,»&ПОВТОР(«0»;3-ДЛСТР(СТРОКА(Продажи)-СТРОКА($E$6)))&СТРОКА(Продажи)-СТРОКА($E$6)); СТРОКА()-СТРОКА($E$6));1)*1000;0) )
Данная формула сортирует столбец
Объем продаж
(динамический диапазон
Продажи
) по убыванию. Пропуски в исходной таблице не допускаются. Количество строк в исходной таблице должно быть меньше 1000.
Разберем формулу подробнее:
-
Формула
СЧЁТЕСЛИ(Продажи;»<«&Продажи)
возвращает массив {4:5:0:2:7:1:3:5}. Это означает, что число 64 (из ячейки
B7
исходной таблицы, т.е. первое число из диапазона
Продажи
) больше 4-х значений из того же диапазона; число 74 (из ячейки
B8
исходной таблицы, т.е. второе число из диапазона
Продажи
) больше 5-и значений из того же диапазона; следующее число 23 — самое маленькое (оно никого не больше) и т.д. -
Теперь вышеуказанный массив целых чисел превратим в массив чисел с дробной частью, где в качестве дробной части будет содержаться номер позиции числа в массиве: {4,001:5,002:0,003:2,004:7,005:1,006:3,007:5,008}. Это реализовано выражением
&»,»&ПОВТОР(«0»;3-ДЛСТР(СТРОКА(Продажи)-СТРОКА($E$6)))&СТРОКА(Продажи)-СТРОКА($E$6))
Именно в этой части формулы заложено ограничение о не более 1000 строк в исходной таблице (см. выше). При желании его можно легко изменить, но это бессмысленно (см. ниже раздел о скорости вычислений). -
Функция
НАИБОЛЬШИЙ()
сортирует вышеуказанный массив. -
Функция
ОСТАТ()
возвращает дробную часть числа, представляющую собой номера позиций/1000, например 0,005. -
Функция
ОКРУГЛ()
, после умножения на 1000, округляет до целого и возвращает номер позиции. Теперь все номера позиций соответствуют числам столбца
Объемы продаж,
отсортированных по убыванию. -
Функция
ИНДЕКС()
по номеру позиции возвращает соответствующее ему число.
Аналогичную формулу можно написать для вывода значений в столбец
Фрукты
=ИНДЕКС(Фрукты;ОКРУГЛ(…))
В
файле примера
, из-за соображений скорости вычислений (см. ниже), однотипная часть формулы, т.е. все, что внутри функции
ОКРУГЛ()
, вынесена в отдельный столбец
J
. Поэтому итоговые формулы в сортированной таблице выглядят так:
=ИНДЕКС(Фрукты;J7)
и
=ИНДЕКС(Продажи;J7)
Также, изменив в формуле массива функцию
НАИБОЛЬШИЙ()
на
НАИМЕНЬШИЙ()
получим сортировку по возрастанию.
Для наглядности, величины значений в столбце
Объем Продаж
выделены с помощью
Условного форматирования
(
). Как видно, сортировка работает.
Тестируем
Теперь добавим новую строку в исходную таблицу. В динамически сортируемых таблицах мы должны получить соответствующую сортировку.
1. В ячейку
А15
исходной таблицы введите слово
Морковь
; 2. В ячейку
В15
введите
Объем продаж
Моркови = 25; 3. После ввода значений, в столбцах
D
и
Е
автоматически будет отображена отсортированная по убыванию таблица; 4. В сортированной таблице новая строка будет отображена предпоследней.
Скорость вычислений формул
На «среднем» по производительности компьютере пересчет пары таких
формул массива,
расположенных в 100 строках, практически не заметен. Для таблиц с 300 строками время пересчета занимает 2-3 секунды, что вызывает неудобства. Либо необходимо отключить автоматический пересчет листа (
) и периодически нажимать клавишу
F9
, либо отказаться от использования формул массива, заменив их столбцами с соответствующими формулами, либо вообще отказаться от динамической сортировки в пользу использования стандартных подходов (см. следующий раздел).
Альтернативные подходы к сортировке таблиц
Отсортируем строки исходной таблицы с помощью стандартного фильтра (выделите заголовки исходной таблицы и нажмите
CTRL+SHIFT+L
). В выпадающем списке выберите требуемую сортировку.
Получим идентичный нашему вариант таблицы, но при добавлении в таблицу новых значений придется применять фильтр заново.
Также можно воспользоваться инструментом Сортировка (
). Для этого нужно выделить все значения исходной таблицы не включая заголовок, вызвать инструмент Сортировка, выбрать столбец, по которому требуется сортировать и вариант сортировки.
Получим идентичный нашему вариант таблицы, но при добавлении новых значений также придется применять фильтр заново.
При использовании
Таблиц в формате EXCEL2007
мы также не получим динамической сортировки. Новое значение (Картофель) останется последним в исходной таблице (до принудительной сортировки таблицы через фильтр), не смотря на его значение продаж (200).
Какой вариант предпочтительней — как всегда — выбирать разработчику.
Еще одна формула массива (+дополнительный столбец). Задача1.1
Сортировку таблицы можно сделать с помощью другой, более простой
формулы массива
, но нам понадобится дополнительный (служебный) столбец D (см.
файл примера лист Пример2
):
=
НАИБОЛЬШИЙ(ЕСЛИ(F7=$B$7:$B$14;СТРОКА($B$7:$B$14)-СТРОКА($B$6);0);СЧЁТЕСЛИ($F$7:$F$14;F7)-СЧЁТЕСЛИ($F$6:F6;F7))
В столбце F содержится отсортированный столбец В (объем продаж). Формула возвращает позицию значения объема продаж. Например, число 86 находится в 5-й строке таблицы.
Для повторов выражение
ЕСЛИ(F8=$B$7:$B$14;СТРОКА($B$7:$B$14)-СТРОКА($B$6);0)
будет возвращать несколько значений: {0:2:0:0:0:0:0:8}, т.е. число 74 находится в строках 2 и 8.
С помощью функции
НАИБОЛЬШИЙ()
сначала выводится 2, затем 8 (в разных строках).
Эта формула более наглядна, чем рассмотренная выше в начале статьи, но требует наличия дополнительного столбца.
Задача2 (Сортировка таблицы по текстовому столбцу)
Отсортируем строки таблицы по содержимому Текстового столбца (по Фруктам).
Примечание
: Про сортировку списка текстовых значений можно прочитать в статье
Сортированный список в MS EXCEL (ТЕКСТовые значения)
Как и в предыдущей задаче предположим, что в столбце, по которому ведется сортировка имеются повторы (названия Фруктов повторяются).
Для сортировки таблицы придется создать 2 служебных столбца (D и E).
В столбце D введем
формулу массива, возвращающую несколько значений
=
СЧЁТЕСЛИ($B$7:$B$14;»<«&$B$7:$B$14)+1
Эта формула является аналогом
ранга
для текстовых значений (позиция значения относительно других значений списка). Текстовому значению, расположенному ниже по алфавиту, соответствует больший «ранг». Например, значению Яблоки соответствует максимальный «ранг» 7 (с учетом повторов).
В столбце E введем обычную формулу:
=
СЧЁТЕСЛИ($D$6:D6;D7)+D7
Эта формула учитывает повторы текстовых значений и корректирует «ранг». Теперь разным значениям Яблоки соответствуют разные «ранги» — 7 и 8. Это позволяет вывести список сортированных значений. Для этого используйте формулу (столбец G):
=
ИНДЕКС($B$7:$B$14;ПОИСКПОЗ(СТРОКА()-СТРОКА($G$6);$E$7:$E$14;0))
Аналогичная формула выведет соответствующий объем продаж (столбец Н).
Задача 2.1 (Двухуровневая сортировка)
Теперь снова отсортируем исходную таблицу по Объему продаж. Но теперь для повторяющихся значений (в столбце А три значения 74), соответствующие значения выведем в алфавитном порядке.
Для этого воспользуемся результатами Задачи 1.1 и Задачи 2.
Подробности в
файле примера
на листе Задача2.