Как правильно написать условное форматирование, чтобы задать цвет ячейки в зависимости от того, содержит ли текст одно из указанных значений?

Мне нужно понять, как окрасить текст в ячейках с помощью условного форматирования. <br/> Если мне требуется выделить одно слово в диапазоне, я использую формулу, например: <br/> <code>="Слава"=В:D</code> <br/> Однако, когда нужно выделить несколько слов, я не знаю, как составить простую формулу. <br/> Я нашёл вот такую формулу в интернете: <br/> <pre><code>=OR(ISNUMBER(SEARCH("Слава"; G:G)); ISNUMBER(SEARCH("Петя"; G:G)); ISNUMBER(SEARCH("Вова"; G:G)))</code></pre> <br/> Существует ли более простая альтернатива для этого? <br/> Я думал, что будет достаточно просто перечислить значения, которые нужно найти через запятую, но это не сработало.
  • 3 марта 2025 г. 11:24
Ответы на вопрос 2
Да, условное форматирование в Excel действительно может быть настроено для поиска нескольких значений в тексте. Формула, которую вы нашли, в целом корректна, и она использует функцию `OR`, чтобы проверить наличие хотя бы одного из нескольких слов. Однако есть способ немного упростить это.

Если вы хотите выделить ячейки, которые содержат одно из нескольких ключевых слов, вы можете воспользоваться формулой с использованием `SEARCH` или `FIND`. Но если вы хотите минимизировать количество используемых функций, лучшего результата, чем ваша версия, сложно добиться. К сожалению, в Excel нет встроенной функции для поиска множественных строк с простым перечислением. 

Однако можно использовать более удобный подход, если ваши ключевые слова находятся в одной ячейке (например, "Слава, Петя, Вова"). Для этого создадим формулу, которая будет использовать `SEARCH` в сочетании с `TEXTJOIN` (если доступно в вашей версии Excel):

1. В ячейку где-то в листе (например, F1) вы можете ввести текст `"Слава, Петя, Вова"`.
2. Затем используйте следующую формулу условного форматирования:

```excel
=SUMPRODUCT(--(ISNUMBER(SEARCH(TRIM(MID(SUBSTITUTE($F$1,",",REPT(" ",LEN($F$1))),ROW(INDIRECT("1:"&LEN($F$1)-LEN(SUBSTITUTE($F$1,",",""))+1),LEN($F$1))),LEN($F$1)))), G:G))>0
```

### Как использовать:
1. Выделите диапазон, который хотите отформатировать.
2. Перейдите к **Условному форматированию** -> **Создать правило**.
3. Выберите **Использовать формулу для определения требуемых ячеек для форматирования**.
4. Вставьте указанную формулу в поле формулы.
5. Установите нужный формат (цвет текста, фона и т.д.).

### Пояснение:
- Используется `SEARCH` для поиска каждого слова из списка "Слава, Петя, Вова".
- `TRIM(MID(SUBSTITUTE(...)))` – этот набор функций разбивает строку на отдельные слова.
- `SUMPRODUCT` суммирует количество найденных значений, и если хотя бы одно слово будет найдено, формула возвращает TRUE.

Таким образом, ячейки, содержащие любое из указанных слов, будут выделены по правилам форматирования.
Чтобы не создавать несколько правил и вписать всё в одну формулу для Google Sheets, можно сделать так: 
=REGEXMATCH(A3; "(Москва|Самара|Екатеринбург)")
где вместо городов нужно указать свои слова, а вместо A3 первую ячейку выбранного диапазона.
Похожие вопросы