Если вы пытаетесь выделить или отфильтровать ячейки по цвету заливки в Microsoft Excel, но стандартный фильтр не показывает опцию «Фильтр по цвету», проблема кроется в формате данных. В 90% случаев это означает, что цвет был применён через условное форматирование, а не вручную — и для таких ячеек требуется обходной путь. В версиях Excel 2016–2023 встроенная фильтрация по цвету работает только с ручным форматированием, тогда как динамическая заливка (например, через правила =A1>100) игнорируется фильтром. Чтобы обойти ограничение, придётся использовать пользовательскую сортировку, VBA-скрипты или конвертировать условное форматирование в статическое.
В этой статье разберём все актуальные способы — от базовых (доступных в Excel 2010) до продвинутых (с макросами для автоматизации). Особое внимание уделим скрытому методу через «Найти и выделить», который работает даже с ячейками, окрашенными через формулы. Если вам нужно не просто выделить, а скопировать, посчитать или удалить цветные ячейки — здесь найдёте готовые решения с пошаговыми скриншотами.
Почему фильтр по цвету не работает: 3 причины
Прежде чем применять обходные пути, проверьте, почему опция Фильтр по цвету может быть недоступна:
- 🔴 Условное форматирование: Цвет задан через правило (например,
=A1<0), а не вручную. В таком случае фильтр игнорирует динамическую заливку. - 🟡 Объединённые ячейки: Если ячейки слиты (
Объединить и поместить в центре), фильтрация по цвету блокируется. - 🟢 Защищённый лист: На листе включена защита (
Рецензирование → Защитить лист), которая ограничивает фильтрацию.
Чтобы быстро диагностировать проблему, выделите ячейку и посмотрите на панель инструментов Главная → Стили:
- Если кнопка
Условное форматированиеподсвечена — цвет применён через правило. - Если активна кнопка
Цвет заливки— цвет назначен вручную.
⚠️ Внимание: В Excel Online фильтрация по цвету отсутствует полностью — даже для ручного форматирования. Для работы с цветами используйте десктопную версию.
Способ 1: Стандартный фильтр по цвету (только для ручной заливки)
Если цвет ячеек назначен вручную (через Главная → Цвет заливки), используйте встроенный фильтр:
- Выделите диапазон с данными (включая заголовки).
- Перейдите на вкладку
Данные → Фильтр(или нажмитеCtrl+Shift+L). - Нажмите на стрелку фильтра в столбце и выберите
Фильтр по цвету → [нужный цвет].
Ограничения метода:
- 🚫 Не работает с цветами из условного форматирования.
- 🚫 Не показывает ячейки с градиентной заливкой.
- 🚫 В Excel 2010 фильтр по цвету текста отсутствует (только по заливке).
Выделите весь диапазон (включая заголовки)|Проверьте, что цвет назначен вручную (не через условное форматирование)|Убедитесь, что на листе нет объединённых ячеек|Отключите защиту листа (если включена)
-->
Способ 2: Выделение по цвету через «Найти и выделить»
Этот метод работает даже с ячейками, окрашенными через условное форматирование. Алгоритм:
- Нажмите
Ctrl+F(илиГлавная → Найти и выделить → Найти). - В окне поиска нажмите
Параметры → Формат. - Перейдите на вкладку
Заливкаи выберите нужный цвет. - Нажмите
Найти все— внизу появится список адресов ячеек. - Зажмите
Ctrlи кликните по строкам в списке, чтобы выделить ячейки на листе.
Преимущества метода:
- ✅ Работает с условным форматированием.
- ✅ Позволяет копировать или удалить выделенные ячейки.
- ✅ Доступен во всех версиях Excel (включая 2010).
⚠️ Внимание: Если цвет ячейки изменяется формулой (например,=ЕСЛИ(A1>100;ИСТИНА;ЛОЖЬ)с заливкой), выделение будет статичным. При обновлении данных (F9) цвет может измениться, но выделение останется на прежних ячейках.
Способ 3: Пользовательская сортировка по цвету (для условного форматирования)
Если фильтр не работает из-за условного форматирования, используйте обходной путь через сортировку:
- Добавьте вспомогательный столбец рядом с данными.
- В первой ячейке столбца введите формулу:
=ПОЛУЧИТЬ.ЯЧЕЙКУ(38; A1)(где
A1— адрес проверяемой ячейки,38— код цвета заливки). - Растяните формулу на весь диапазон.
- Отсортируйте таблицу по вспомогательному столбцу (по убыванию или возрастанию).
Расшифровка кодов цветов:
| Цвет | Код (десятичный) | HEX |
|---|---|---|
| Красный | 3 | #FF0000 |
| Зелёный | 4 | #00FF00 |
| Синий | 5 | #0000FF |
| Жёлтый | 6 | #FFFF00 |
| Без заливки | 0 | N/A |
Ограничения:
- 🔹 Формула
ПОЛУЧИТЬ.ЯЧЕЙКУвозвращает только цвет заливки, а не текста. - 🔹 В Excel для Mac функция
ПОЛУЧИТЬ.ЯЧЕЙКУможет возвращать некорректные значения.
Как узнать код цвета для формулы?
1. Выделите ячейку с нужным цветом.
2. Нажмите Ctrl+C (скопировать).
3. Создайте новую ячейку и вставьте туда цвет через Главная → Цвет заливки → Другие цвета → Из буфера обмена.
4. Используйте макрос для получения кода:
Sub GetColorCode()
Dim clr As Long
clr = Selection.Interior.Color
MsgBox "Код цвета: " & clr
End Sub
Способ 4: VBA-макрос для выборки по цвету (универсальный метод)
Для автоматизации выборки по цвету (включая условное форматирование) используйте этот макрос:
Sub SelectCellsByColor()
Dim rng As Range, cell As Range, targetColor As Long
Dim colorCells As Range
' Задайте диапазон поиска (например, A1:A100)
Set rng = Range("A1:A100")
' Задайте цвет (в формате RGB или используйте ColorPicker)
targetColor = RGB(255, 0, 0) ' Красный
For Each cell In rng
If cell.Interior.Color = targetColor Then
If colorCells Is Nothing Then
Set colorCells = cell
Else
Set colorCells = Union(colorCells, cell)
End If
End If
Next cell
If Not colorCells Is Nothing Then
colorCells.Select
MsgBox "Найдено " & colorCells.Count & " ячеек", vbInformation
Else
MsgBox "Ячейки с указанным цветом не найдены", vbExclamation
End If
End Sub
Как адаптировать макрос:
- 🔧 Замените
Range("A1:A100")на ваш диапазон. - 🎨 Чтобы выбрать цвет визуально, добавьте перед циклом строку:
targetColor = Application.Dialogs(xlDialogEditColor).Show(1) - 📋 Для выборки по цвету текста замените
Interior.ColorнаFont.Color.
⚠️ Внимание: Макросы работают только в файлах с расширением.xlsm. Если ваш файл сохранён как.xlsx, пересохраните его с поддержкой макросов (Файл → Сохранить как → Тип файла: Книга Excel с поддержкой макросов (*.xlsm)).
Стандартный фильтр|Найти и выделить|Пользовательская сортировка|VBA-макросы|Не знаю, как это делать-->
Способ 5: Копирование только цветных ячеек (без фильтра)
Если нужно скопировать только ячейки определённого цвета (например, для переноса в другой лист), используйте этот алгоритм:
- Выделите диапазон с данными.
- Нажмите
F5 → Специальная вставка → Видимые ячейки только(если применялся фильтр). - Используйте макрос для копирования:
Sub CopyColoredCells()Dim rng As Range, cell As Range, destSheet As Worksheet
Dim targetColor As Long, pasteRow As Long
Set rng = Selection
targetColor = RGB(255, 200, 0) ' Оранжевый
Set destSheet = Worksheets("Лист2") ' Куда копировать
pasteRow = 1
For Each cell In rng
If cell.Interior.Color = targetColor Then
cell.Copy destSheet.Cells(pasteRow, 1)
pasteRow = pasteRow + 1
End If
Next cell
End Sub
Особенности:
- 📄 Макрос копирует только значения. Чтобы сохранить форматирование, замените
cell.Copyнаcell.Copy: destSheet.Cells(pasteRow, 1).PasteSpecial xlPasteAll. - 🔄 Для копирования цвета текста добавьте проверку
cell.Font.Color.
Распространённые ошибки и как их избежать
При работе с выборкой по цвету пользователи часто сталкиваются с этими проблемами:
| Ошибка | Причина | Решение |
|---|---|---|
| Фильтр по цвету неактивен | Цвет применён через условное форматирование | Используйте метод «Найти и выделить» или VBA |
| Макрос не находит ячейки | Неверный код цвета (RGB ≠ цветовой схеме Excel) | Получите код цвета через MsgBox Selection.Interior.Color |
| После сортировки цвета «слетают» | Цвета заданы формулами (динамическая заливка) | Преобразуйте условное форматирование в статическое (копирование → вставка значений) |
| Не работает в Excel Online | Ограничения веб-версии | Откройте файл в десктопной версии |
Совет для сложных случаев: если цвет ячейки зависит от формулы (например, =ЕСЛИ(A1>100;ИСТИНА;ЛОЖЬ) с заливкой), сначала преобразуйте условное форматирование в статическое:
- Выделите диапазон.
- Нажмите
Ctrl+C(скопировать). - Щёлкните правой кнопкой →
Специальная вставка → Форматы.
FAQ: Частые вопросы по выборке по цвету
Можно ли отфильтровать ячейки по цвету текста, а не заливки?
Да, но с ограничениями:
- В Excel 2016–2023 фильтр по цвету текста доступен в меню
Фильтр по цвету(рядом с заливкой). - В Excel 2010–2013 фильтра по цвету текста нет — используйте макрос с проверкой
cell.Font.Color. - Для условного форматирования текста (например, красный текст при отрицательных значениях) применяйте метод «Найти и выделить».
Как посчитать количество ячеек определённого цвета?
Используйте один из способов:
- Метод «Найти и выделить»: После поиска по цвету посмотрите количество найденных ячеек в строке статуса.
- Формула: Для статической заливки:
=СЧЁТЕСЛИ(ПОЛУЧИТЬ.ЯЧЕЙКУ(38; A1:A100); 3)(где
3— код красного цвета). - VBA: Макрос из Способа 4 выводит количество найденных ячеек в сообщении.
Почему макрос не видит цвет ячейки, хотя он есть?
Вероятные причины:
- Цвет применён через тему документа (не RGB). Используйте
cell.Interior.ThemeColorвместоColor. - Цвет задан через условное форматирование с формулой. Преобразуйте его в статический (см. совет выше).
- Ячейка имеет градиентную заливку. VBA не распознаёт градиенты — только сплошные цвета.
Чтобы диагностировать проблему, добавьте в макрос строку:
Debug.Print cell.Address & ": " & cell.Interior.Color
И проверьте значения в окне Immediate Window (Ctrl+G).
Как выбрать ячейки с полупрозрачной заливкой?
Полупрозрачные цвета (например, 80% красного) не распознаются стандартными методами. Решения:
- Используйте VBA с проверкой
cell.Interior.PatternиPatternColor. - Преобразуйте полупрозрачную заливку в сплошную:
cell.Interior.Pattern = xlSolid - Для условного форматирования отключите прозрачность в правилах (
Управление правилами → Изменить правило → Формат → Заливка → Прозрачность: 0%).
Можно ли сохранить фильтр по цвету при закрытии файла?
Нет, фильтры по цвету (как и любые другие фильтры) сбрасываются при закрытии книги. Альтернативы:
- Создайте таблицу Excel (
Ctrl+T) — она сохраняет фильтры при открытии. - Используйте VBA для автоматического применения фильтра при открытии файла (макрос в событии
Workbook_Open). - Скопируйте отфильтрованные данные на отдельный лист и сохраните его.