Работа с цветовыми метками в Microsoft Excel — одна из самых востребованных, но недооценённых функций. Вы когда-нибудь сталкивались с ситуацией, когда нужно быстро найти все строки, выделенные красным в таблице с тысячей записей? Или автоматически посчитать количество зелёных ячеек в отчёте? Стандартные инструменты сортировки здесь бессильны — они игнорируют цвет заливки. Но решение существует, и их даже несколько.
В этой статье мы разберём 5 проверенных методов: от простого ручного фильтра до автоматического выделения с помощью VBA. Вы узнаете, как работать с цветом в разных версиях Excel (2013, 2016, 2019, 2021 и Microsoft 365), какие подводные камни ждут новичков, и как обойти ограничения программы. Особое внимание уделим условному форматированию и макросам — инструментам, которые экономят часы рутинной работы.
Если вы никогда не использовали цветовые фильтры, начните с базовых методов. Опытные пользователи найдут здесь редкие приёмы, например, как извлечь цвет ячейки в отдельный столбец или создать динамический отчёт по цветовым меткам. Все инструкции сопровождаются скриншотами и готовыми кодами — их можно скопировать и сразу применить в своей таблице.
Предупреждаем заранее: некоторые способы требуют включения Разработчика в ленте Excel. Если у вас его нет — не проблема, мы покажем, как активировать его за 30 секунд.
1. Базовый метод: фильтр по цвету ячейки
Самый простой способ выделить строки по цвету — использовать встроенный фильтр. Он работает во всех версиях Excel начиная с 2007 года, но имеет важное ограничение: фильтрует только по цвету заливки ячейки, игнорируя цвет шрифта.
Чтобы применить фильтр:
- Выделите диапазон данных (включая заголовки столбцов).
- Перейдите на вкладку
Данные→Фильтр(или нажмитеCtrl+Shift+L). - Нажмите на стрелку фильтра в любом столбце, где есть цветные ячейки.
- В выпадающем меню выберите
Фильтр по цвету→Цвет заливкии укажите нужный оттенок.
После этого в таблице останутся только строки с выбранным цветом. Чтобы вернуть все данные, снова нажмите на фильтр и выберите Удалить фильтр.
⚠️ Внимание: Если вы примените фильтр к столбцу, где ячейки окрашены условным форматированием (например, по правилу "больше 100 — зелёный"), фильтр по цвету не сработает. Он видит только ручную заливку.
Этот метод идеален для быстрого анализа, но имеет минусы:
- 🔴 Не работает с цветом текста (только заливка).
- 🔴 Нельзя фильтровать по нескольким цветам одновременно.
- 🔴 После фильтрации строки не выделяются — просто скрываются остальные.
2. Условное форматирование: автоматическое выделение цветных строк
Если вам нужно не просто отфильтровать, а визуально выделить все строки определённого цвета, используйте условное форматирование. Этот метод подходит для таблиц, где цвет ячеек задаётся вручную (не через формулы).
Инструкция:
- Выделите диапазон данных (например,
A1:D100). - Перейдите на вкладку
Главная→Условное форматирование→Создать правило. - Выберите тип правила
Форматировать только ячейки, которые содержат. - В поле
Форматировать только ячейки сукажитеЗаливка ячейки→ выберите цвет. - Нажмите
Формати задайте стиль выделения (например, жирный шрифт или рамку).
Теперь все ячейки выбранного цвета будут автоматически подсвечиваться. Чтобы выделить целые строки, используйте этот трюк:
=ИЛИ($A1=ИСТИНА; $B1=ИСТИНА; $C1=ИСТИНА)
(где A1, B1 — ячейки с цветовой заливкой).
Выделить весь диапазон данных (включая заголовки)
Проверить, что цвет заливки применён вручную (не через формулы)
Убедиться, что в таблице нет объединённых ячеек
Сохранить резервную копию файла (на случай ошибок)-->
Преимущества метода:
- ✅ Работает динамически — выделение обновляется при изменении цвета.
- ✅ Можно комбинировать с другими правилами (например, выделять красные строки и значения выше среднего).
- ✅ Поддерживает градиенты и пользовательские цвета.
⚠️ Внимание: Если вы копируете ячейки с условным форматированием в другой файл, правила не переносятся. Их нужно создавать заново или использовать Диспетчер правил для экспорта.
3. Функция ПОЛУЧИТЬ.ЦВЕТ: извлекаем цвет в отдельный столбец
Мало кто знает, но в Excel есть скрытая функция ПОЛУЧИТЬ.ЦВЕТ (англ. GET.CELL), которая возвращает числовой код цвета ячейки. Её нельзя ввести напрямую — только через Имя или VBA. Но результат стоит усилий: вы сможете сортировать, фильтровать и анализировать данные по цвету как по обычному числу.
Как использовать:
- Нажмите
Формулы→Диспетчер имён→Создать. - В поле
ИмявведитеЦветЯчейки. - В поле
Диапазонвведите:=ПОЛУЧИТЬ.ЦВЕТ(63;!Лист1!$A1)(где
Лист1— название вашего листа,A1— адрес первой ячейки). - Теперь в любой ячейке можно ввести формулу
=ЦветЯчейки, и она вернёт код цвета дляA1.
Чтобы применить это ко всей таблице:
- 📌 Создайте вспомогательный столбец с формулой
=ЦветЯчейки, но замените$A1на относительную ссылку (например,$A2для второй строки). - 📌 Скопируйте формулу вниз — теперь у вас есть числовые коды для всех ячеек.
- 📌 Используйте стандартный фильтр или сортировку по этому столбцу.
Критическая деталь: функция ПОЛУЧИТЬ.ЦВЕТ возвращает цвет в формате RGB, но в виде отрицательного числа. Чтобы преобразовать его в привычный вид (например, #FF0000 для красного), используйте формулу:
=ТЕКСТ(16777216+ЦветЯчейки;"[Цвет]0")
| Цвет заливки | Код функции ПОЛУЧИТЬ.ЦВЕТ | Шестнадцатеричный код |
|---|---|---|
| -16776961 | #FF0000 | |
| -16744448 | #00FF00 | |
| -16776961 | #0000FF | |
| -256 | #FFFF00 |
4. VBA-макрос: выделение строк по цвету за 1 клик
Для продвинутых пользователей самый мощный инструмент — VBA. С его помощью можно не только выделять строки, но и копировать их в новый лист, подсчитывать количество или даже отправлять по email. Ниже приведён макрос, который выделяет все строки с ячейками красного цвета в выбранном диапазоне:
Sub ВыделитьСтрокиПоЦвету()
Dim rng As Range, cell As Range
Dim colorToFind As Long
Dim entireRow As Range
' Укажите цвет для поиска (красный)
colorToFind = RGB(255, 0, 0)
' Запрашиваем диапазон у пользователя
On Error Resume Next
Set rng = Application.InputBox( _
"Выделите диапазон для поиска:", _
"Поиск по цвету", _
Selection.Address, _
Type:=8)
On Error GoTo 0
If rng Is Nothing Then Exit Sub
' Снимаем все выделения
Cells.Interior.ColorIndex = xlNone
' Ищем ячейки с нужным цветом и выделяем всю строку
For Each cell In rng
If cell.Interior.Color = colorToFind Then
If entireRow Is Nothing Then
Set entireRow = cell.EntireRow
Else
Set entireRow = Union(entireRow, cell.EntireRow)
End If
End If
Next cell
' Выделяем найденные строки жёлтым
If Not entireRow Is Nothing Then
entireRow.Interior.Color = RGB(255, 255, 0)
End If
End Sub
Как использовать этот макрос:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert→Module). - Закройте редактор и вернитесь в Excel.
- Нажмите
Alt+F8, выберите макросВыделитьСтрокиПоЦветуи запустите его. - Выделите диапазон данных в появившемся окне.
Макрос можно модифицировать:
- 🔧 Измените
RGB(255, 0, 0)на другой цвет (например,RGB(0, 255, 0)для зелёного). - 🔧 Замените
entireRow.Interior.Color = RGB(255, 255, 0)на другой цвет выделения. - 🔧 Добавьте копирование строк в новый лист с помощью
entireRow.Copy Destination:=Sheets("Результаты").Range("A" & Rows.Count).End(xlUp).Offset(1).
⚠️ Внимание: Макросы не работают в Excel Online и мобильной версии. Также они могут конфликтовать с защищёнными листами — перед запуском снимите защиту (Рецензирование → Снять защиту листа).
5. Power Query: продвинутая фильтрация по цвету
Если вы работаете с большими данными, Power Query (доступен в Excel 2016+ и Microsoft 365) станет вашим спасением. В отличие от стандартных методов, он позволяет:
- 📊 Сохранять цветовые метки при импорте данных.
- 📊 Фильтровать по цвету при загрузке.
- 📊 Автоматизировать отчёты с цветовой сегментацией.
Пошаговая инструкция:
- Выделите вашу таблицу и нажмите
Данные→Из таблицы/диапазона(в группеПолучить и преобразовать данные). - В открывшемся окне Power Query добавьте пользовательский столбец:
= if [ВашСтолбец]{[Index]}] = "ВашеЗначение" then "Красный" else "Зелёный"(замените
ВашСтолбециВашеЗначениена реальные данные). - Используйте этот столбец для фильтрации: нажмите на стрелку фильтра → выберите нужный цвет.
- Нажмите
Закрыть и загрузить, чтобы вернуть данные в Excel.
Power Query не видит цвет ячеек напрямую, но вы можете:
- 🔄 Сначала извлечь цвет с помощью
ПОЛУЧИТЬ.ЦВЕТ(как в разделе 3), затем загрузить данные в Power Query. - 🔄 Использовать условное форматирование до импорта в Power Query, чтобы цвета преобразовались в значения.
Как автоматизировать обновление данных?
Чтобы ваш отчёт по цветовым меткам обновлялся автоматически:
1. Сохраните файл как .xlsm (с поддержкой макросов).
2. В Power Query нажмите Домой → Закрыть и загрузить → Загрузить в... и выберите Таблица + Создать подключение.
3. Создайте макрос с командой ThisWorkbook.Connections("ВашеПодключение").Refresh.
4. Назначьте макрос на кнопку или запускайте по расписанию через Application.OnTime.
6. Альтернативные решения: надстройки и Google Sheets
Если встроенные инструменты Excel вас не устраивают, рассмотрите эти варианты:
Надстройки для Excel:
- 🧩 Kutools for Excel — позволяет фильтровать по цвету шрифта и заливки, экспортировать цветовые данные.
- 🧩 Ablebits — включает инструмент
Select by Colorдля выделения ячеек и строк. - 🧩 ASAP Utilities — бесплатная надстройка с функцией
Select → Cells with specific formatting.
Google Таблицы:
В Google Sheets нет функции ПОЛУЧИТЬ.ЦВЕТ, но можно использовать скрипты:
function getBackgroundColor() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
var color = range.getBackground();
Logger.log(color); // Выведет цвет в лог (например, #ffffff)
}
Чтобы применить это ко всей таблице, создайте пользовательскую функцию и используйте её как =getBgColor(A1).
Python + OpenPyXL:
Для автоматизации вне Excel подойдёт библиотека OpenPyXL:
from openpyxl import load_workbook
wb = load_workbook('your_file.xlsx')
ws = wb.active
for row in ws.iter_rows():
for cell in row:
if cell.fill.start_color.index == 'FFFF0000': # Красный цвет
print(f"Строка {cell.row} содержит красную ячейку")
FAQ: Частые вопросы по работе с цветом в Excel
Можно ли фильтровать по цвету шрифта, а не заливки?
Да, но только через VBA или надстройки. Стандартный фильтр в Excel работает только с цветом заливки. Пример макроса для цвета шрифта:
Sub ФильтрПоЦветуШрифта()
Dim rng As Range, cell As Range
Dim colorToFind As Long
colorToFind = RGB(255, 0, 0) ' Красный
For Each cell In Selection
If cell.Font.Color = colorToFind Then
cell.EntireRow.Hidden = False
Else
cell.EntireRow.Hidden = True
End If
Next cell
End Sub
Почему функция ПОЛУЧИТЬ.ЦВЕТ возвращает ошибку #ИМЯ?
Эта функция работает только в Диспетчере имён или через VBA. Если вы пытаетесь ввести её напрямую в ячейку, Excel её не распознаёт. Создайте имя как описано в разделе 3.
Как скопировать только строки определённого цвета в новый лист?
Используйте этот макрос:
Sub КопироватьЦветныеСтроки()
Dim srcSheet As Worksheet, destSheet As Worksheet
Dim rng As Range, cell As Range, lastRow As Long
Set srcSheet = ThisWorkbook.Sheets("Исходный")
Set destSheet = ThisWorkbook.Sheets("Результаты")
destSheet.Cells.Clear
lastRow = 1
For Each cell In srcSheet.UsedRange
If cell.Interior.Color = RGB(255, 0, 0) Then ' Красный
cell.EntireRow.Copy destSheet.Rows(lastRow)
lastRow = lastRow + 1
End If
Next cell
End Sub
Перед запуском создайте лист с названием Результаты.
Почему условное форматирование не видит цвет, применённый через "Формат по образцу"?
Цвет, скопированный через Формат по образцу (Главная → Формат по образцу), воспринимается Excel как ручная заливка. Проблема может быть в:
- Объединённых ячейках (условное форматирование игнорирует их).
- Защищённом листе (снимите защиту в
Рецензирование → Снять защиту). - Конфликте правил (проверьте
Условное форматирование → Управление правилами).
Можно ли сохранить цветовые фильтры при экспорте в PDF?
Да, но с оговорками:
- 📄 Цвета заливки сохранятся, если они были применены вручную или через условное форматирование.
- 📄 Фильтрация (скрытие строк) не сохраняется — в PDF попадёт вся таблица.
- 📄 Чтобы экспортировать только видимые строки, используйте
Файл → Экспорт → Создать PDF/XPS → Параметры → Печатать только видимые ячейки.