Условное форматирование с использованием OR () игнорирует один из аргументов

319
Guilherme Taffarel Bergamin

Я пытаюсь раскрасить данные в одном столбце на основе данных в другом столбце.

Что не так с следующей формулой?

=OR($D1 = "TEXT 1", SEARCH("TEXT 2", $D1) > 0) 

То, что я хотел бы сделать здесь, это «покрасить ячейку, когда она точно TEXT 1или TEXT 2является частью ее стоимости».

Когда я делаю это, он проверяет только аргумент внутри SEARCH()и не TEXT 1, но я знаю, что первый является правильным, потому что, если я удаляю SEARCH()аргумент как, то он проверяет TEXT 1(даже внутри OR()).

Что мне здесь не хватает?

Кроме того, если есть лучший способ сделать TEXT 2проверку, я был бы рад узнать об этом. Мне не нравится синтаксис Excel. Проверка, аналогичная SQL "LIKE", функция с именем "CONTAINS" или что-то в этом роде, была бы полезной.

0

1 ответ на вопрос

0
Scott Craner

Если TEXT 2не найдено, ПОИСК приведет к ошибке, и как таковое, ИЛИ будет ошибкой и будет рассматриваться как ЛОЖЬ, независимо от того, D1 =Text 1

Используйте ISNUMBER, чтобы вернуть FALSE или TRUE:

=OR($D1 = "TEXT 1", ISNUMBER(SEARCH("TEXT 2", $D1))) 

enter image description here

подождите, правда? Я был уверен, что `> 0` вернет логическое значение. Кстати, я думал, что `SEARCH` всегда возвращал число. Что здесь происходит? Это действительно сработало (Запутанный программист, вынужденный работать в первый раз с Excel) Guilherme Taffarel Bergamin 6 лет назад 0
ПОИСК вернет число, если оно найдено, и ошибку «# Значение», если она не найдена. В VBA `Instr` вернет` 0`, если не найден, но не функции листа. Scott Craner 6 лет назад 1
О, я вижу. Большое спасибо, Скотт. Я предполагаю, что моей проблемой была неспособность визуализировать, когда ошибки происходят, и не ожидал, что ошибка могла фактически быть возвращаемым значением. Guilherme Taffarel Bergamin 6 лет назад 0

Похожие вопросы