Как сортировать по цвету в Excel
В этой заметке разберемся с тем, как сортировать в Excel по цвету ячейки.
Во-первых, стоит сказать, что в Excel есть два способа сортировки по цвету — сортировка по цвету ячейки и сортировка по цвету текста. Оба варианта могут быть использованы.
Логично, что сортировка по цвету используется в том случае, если в таблице задано цветовое форматирование текста или заливка фона. Также сортировку по цвету можно применять, если таблица была отформатирована с помощью инструмента условного форматирования.
Чтобы отсортировать таблицу по цвету необходимо выделить любую ячейку диапазона (1), который требуется отсортировать и из меню Сортировка и фильтр (2) выбрать Настраиваемая сортировка (3).
В открывшемся окне из выпадающего списка Сортировать по нужно указать столбец, который будет определять сортировку (4).
Далее указать вариант сортировки (5) — Цвет ячейки или Цвет шрифта. И из выпадающего списка Порядок необходимо выбрать один из цветов (6).
Эти цвета Эксель автоматически берет из таблицы, нам остается лишь указать нужный. В завершение необходимо указать направление сортировки (7), то есть сверху или снизу будут находиться ячейки с выбранным нами цветом.
Далее добавляем уровнь, нажатием соответствующей кнопки и повторяем те же действия для следующего цвета этого же столбца.
Уровни означают следующее — после того, как данные таблицы будут отсортированы по цвету первого уровня, они будут сортироваться по второму цвету и так далее.
Сортировка диапазона по цвету
Способ 1. Если у вас Excel 2007 или новее.
Тут все просто. Начиная с 2007-й версии в Excel добавили сортировку и фильтрацию по цвету заливки и по цвету шрифта как штатную функцию. Проще всего до них добраться через стандартный автофильтр:
Из минусов только невозможность фильтровать сразу по нескольким цветам.
Способ 2. Если у вас Excel 2003 или старше.
Версии Microsoft Excel до 2007 года в своем исходном состоянии не умели сортировать ячейки по формату, что, безусловно, является серьезным недостатком, если Вы используете цветовые кодировки в своих таблицах (а это бывает удобно). Поэтому давайте исправим досадное упущение — напишем на VBA простую пользовательскую функцию ColorIndex, которая будет выводить числовой код цвета заливки любой заданной ячейки. По этому коду мы и будем далее сортировать.
Для этого откройте редактор Visual Basic через меню Сервис — Макрос — Редактор Visual Basic (Tools — Macro — Visual Basic Editor) , вставьте новый пустой модуль (меню Insert — Module) и скопируйте туда текст простой функции:
Теперь можно закрыть редактор Visual Basic, вернуться в Excel и, выделив любую пустую ячейку, вызвать созданную функцию ColorIndex через меню Вставка — Функция — категория Определенные пользователем (Insert — Function — User defined) . В качестве аргумента укажите ячейку, цвет заливки которой хотите получить в виде цифрового кода.
Применительно к спискам, такая функция позволит легко сортировать ячейки по цвету заливки:
Если вам нужно вытаскивать не код цвета заливки, а код цвета шрифта, то функция слегка изменится:
Наша функция ColorIndex, к сожалению, имеет пару недостатков:
- С ее помощью нельзя получить цвет, который ячейка имеет при использовании условного форматирования
- Она не пересчитывается автоматически при изменении цвета одной из ячеек, поскольку Excel не считает изменение цвета редактированием содержимого ячейки и не запускает автоматического пересчета листа. Это нужно сделать самому, нажав Ctrl+Alt+F9, либо дописав к нашей функции в каждой ячейке вот такую добавку:
=ColorIndex(A2)+СЕГОДНЯ()*0
чтобы содержимое ячейка пересчитывалась автоматически при каждом пересчете листа.