Microsoft Excel в своем исходном состоянии не умеет сортировать ячейки по формату (цвету заливки или шрифта, например), что является серьезным недостатком, если Вы используете цветовые кодировки в своих таблицах (а это бывает удобно). Поэтому давайте исправим досадное упущение - напишем пользовательскую функцию ColorIndex(), которая будет выводить числовой код цвета любой заданной ячейки, по которому мы и будем далее сортировать.
Для этого откройте редактор Visual Basic через меню Сервис - Макрос - Редактор Visual Basic (Tools - Macro - Visual Basic Editor), вставьте новый пустой модуль (меню Insert - Module) и скопируйте туда текст простой функции:
Public Function ColorIndex(Cell As Range)
ColorIndex = Cell.Interior.ColorIndex
End Function
Теперь можно закрыть редактор Visual Basic, вернуться в Excel и, выделив любую пустую ячейку, вызвать созданную функцию ColorIndex() через меню Вставка - Функция - категория Определенные пользователем (Insert - Function - User defined). В качестве аргумента укажите ячейку, цвет заливки которой хотите получить в виде цифрового кода.
Применительно к спискам, такая функция позволит легко сортировать ячейки по цвету заливки:
|
|
|
P.S.
Наша функция ColorIndex, к сожалению, имеет пару недостатков:
· | С ее помощью нельзя получить цвет, который ячейка имеет при использовании условного форматирования |
· | Она не пересчитывается автоматически при изменении цвета одной из ячеек, поскольку Excel не считает изменение цвета редактированием содержимого ячейки и не запускает автоматического пересчета листа. Это нужно сделать самому, нажав Ctrl+Alt+F9, либо дописав к нашей функции в каждой ячейке вот такую добавку: =ColorIndex(A2)+СЕГОДНЯ()*0 чтобы содержимое ячейка пересчитывалась автоматически при каждом пересчете листа. |