Главная мысль: цвет в Excel лучше делать через условное форматирование

В Excel “раскрасить” ячейку автоматически, когда меняется значение, проще всего через условное форматирование. Это не VBA-логика и не формулы вида “если - то раскрась”, а встроенные правила, которые Excel пересчитывает сам.

Ниже - самые рабочие варианты: когда нужно выделять по одному условию, по нескольким, и когда условие завязано на другую ячейка.

Вариант 1: динамически менять цвет по условию (больше/меньше/между)

Подходит, если нужно: “если значение больше 3,7 - красный, иначе - зеленый” и чтобы цвет обновлялся автоматически.

Настройка

  1. Выделите диапазон (например, B2:H10).
  2. Главная -> Условное форматирование -> Создать правило.
  3. Выберите Форматировать только те ячейки, которые содержат.
  4. Укажите условие, например:
  5. Значение ячейки -> больше -> 3,7
  6. Нажмите Формат... -> вкладка Заливка -> выберите нужный цвет.
  7. Нажмите ОК.

Чтобы сделать второе правило (например, “меньше или равно 3,45 - зеленый”), создайте еще одно правило и настройте другое условие.

Вариант 2: окрасить при точном совпадении (значение = X)

Если задача простая: “раскрась, когда значение равно 50/100/3,4”.

Быстрый путь

  • Условное форматирование -> Правила выделения ячеек -> Равно
  • Укажите нужное число и выберите цвет.

Через “другое правило” (универсально)

  1. Главная -> Условное форматирование -> Создать правило
  2. Использовать формулу для определения форматируемых ячеек
  3. В поле формулы задайте условие вида:
  4. =A1=50
  5. Формат... -> Заливка -> выберите цвет
  6. ОК

Важно: в формуле используйте адрес первой ячейки из выделенного диапазона (и абсолютные ссылки там, где нужно “держать” ссылку фиксированной).

Вариант 3: цвет зависит от значения в другой ячейке

Это как раз тот сценарий, который часто пытаются решить функцией на VBA, но правильно делается условным форматированием.

Пример: красим ячейку в зависимости от того, что в C6 меньше 80%.

Настройка

  1. Выделите ту ячейка, которую хотите перекрашивать.
  2. Главная -> Условное форматирование -> Создать правило
  3. Выберите Использовать формулу для определения форматируемых ячеек
  4. В формуле начните со = и задайте условие, например:
  5. =$C$6<80%
  6. Формат... -> вкладка Заливка -> выберите цвет
  7. ОК

Если C6 меняется, цвет будет обновляться автоматически.

Вариант 4: выделить пустые ячейки или ячейки с ошибками

Иногда нужно “всегда одинаковый цвет для пустоты” или для ошибки в формуле.

Пустые ячейки

Правило по формуле:
- =ISBLANK(A1)

Пустые (частый вариант)

  • =ISBLANK(A1)
    или (если у вас Excel/форматировка ведет себя иначе) можно использовать:
  • =A1=""

Ошибки в ячейке (например, #N/A, #DIV/0!)

Формула:
- =ISERROR(A1)

Дальше одинаково: Формат... -> выбираете цвет -> ОК.

Вариант 5: статически (один раз) - через “Найти все”, но почти не нужно

Условное форматирование динамическое. Если хочется “раскрасить навсегда и больше не трогать”, можно сделать это вручную через поиск и затем применить цвет форматированием.

Суть такая:
1. Главная -> Найти и выделить -> Найти
2. Введите нужный значение
3. Нажмите Найти все
4. Выделите найденное (обычно через выбор всех результатов)
5. Нажмите Ctrl+1 (или ПКМ -> Формат ячеек) -> вкладка Заливка -> выберите цвет

Но это не автоматизация: поменяли данные - цвет сам не обновится.

Почему не работает “функция окрасить ячейку” (VBA)

Если вы пишете VBA и меняете .Interior.ColorIndex, а в результате ячейка не окрашивается, обычно причина одна из двух:

  • Вы меняете не тот объект (не реальную ячейку листа, а “диапазон” в момент, когда он уже неактуален).
  • Вы ждете, что Excel будет вызывать VBA “как формулу”. Но обычные функции в листе (UDF) не предназначены для изменения форматирования: Excel может пересчитать лист, но форматирование внутри такой функции не будет применено так, как вы ожидаете.

Практический итог простой: для окрашивания по условию используйте условное форматирование. Оно создано именно для этого и работает стабильно.

Таблица: какие формулы ставить в “Использовать формулу для определения форматируемых ячеек”

Ниже - готовые шаблоны. Везде в примерах A1 замените на адрес первой ячейка из вашего выделения.

Что нужно подсветить Формула правила (начинать с =) Когда условие TRUE
Значение равно X =A1=50 в A1 ровно 50
Значение больше X =A1>3,7 значение больше порога
Значение меньше или равно X =A1<=3,45 значение попало в нижнюю границу
Между X и Y =AND(A1>3,4,A1<3,8) значение между порогами
По значению другой ячейки =$C$6<80% в C6 условие выполняется
Пустая ячейка =ISBLANK(A1) ячейка пуста
Ошибка в ячейке =ISERROR(A1) в ячейке ошибка
Текст содержит слово =ISNUMBER(SEARCH("нет",A1)) в строке есть “нет”

Мелкие советы, чтобы не словить “не то срабатывает”

  • Формула в условном форматировании всегда работает от “первой” ячейка выделения. Поэтому проверьте адрес в формуле.
  • Если ссылаетесь на “якорь” (например, $C$6), используйте $ (абсолютные ссылки), чтобы правило не “уползало” при применении к диапазону.
  • Если правил несколько, следите за их приоритетом: в “Диспетчер правил условного форматирования” можно увидеть и поправить порядок.

Итог

Для окрашивания ячейка в нужный цвет при определенном значение в Excel используйте условное форматирование. Оно делает это динамически и надежно, без попыток заставить Excel вызывать VBA/формулы так, как это не задумано.