= ISNUMBER (SEARCH ()) формула не работает должным образом - PullRequest
0 голосов
/ 10 ноября 2019

По сути, я пытаюсь найти, содержатся ли значения из столбца b в ячейках столбца a

https://imgur.com/UevybZP

В настоящее время я использую формулу

=ISNUMBER(SEARCH(B1,$A:$A)) 

и использование его в условном форматировании для выделения ячеек в столбце A, содержащем строки из столбца B. Но он не выделяет правильные ячейки

Любой совет?

Ответы [ 3 ]

1 голос
/ 10 ноября 2019

Проблема в том, что ваша формула ISNUMBER(SEARCH(…. возвращает массив значений {FALSE;TRUE;FALSE;FALSE;...} один возврат для каждого элемента в within_text. Вам нужно знать, совпадают ли какие-либо из этих элементов.

Итак, с вашей формулой рассмотрим модификацию формулы array

=OR(ISNUMBER(SEARCH(B1,$A:$A)))

Так какэто формула массива, вам нужно «подтвердить» ее, удерживая ctrl + shift при нажатии , введите . Если вы сделаете это правильно, Excel поместит фигурные скобки {...} вокруг формулы, как указано в строке формул

Если вы не хотите использовать метод ввода CSE, вы можете использовать этоформула, которая будет возвращать ноль для отсутствия совпадений или быть ненулевой для любых совпадений:

=SUMPRODUCT(-ISNUMBER(SEARCH(B1,$A:$A)))
0 голосов
/ 11 ноября 2019

Выделите столбец A (или соответствующий диапазон в начальной ячейке столбца A A1) с первой ячейкой (в данном случае A1) в качестве активной ячейки, используйте следующую формулу в качестве правила условного форматирования:

=(SEARCH($B1,$A1)*(LEN($B1)>0))>0

Логика состоит в том, чтобы сначала выполнить поиск заданной подстроки из основной строки, а затем умножить результат на LEN($B1)>0, чтобы исключить результат 1, возвращенный для пустых ячеек в столбце B.

Demo

Примечание: Условное форматирование работает в режиме array, поэтому даже при использовании формулыпросматривает значения в первой строке диапазона, при условии, что вы правильно используете относительные (или в некоторых случаях абсолютные) ссылки на ячейки и правильно выделяете диапазон результатов перед настройкой правила, правило будет применено таким же образомкак для первой строки массива, как показано в этом примере.

0 голосов
/ 10 ноября 2019

Функция SEARCH в Excel используется для поиска позиции одной строки в другой строке . Обычно вы используете это так:

=SEARCH("String A", "A Longer String Containing String A")

Это вернет индекс символа, где первая строка начинается во второй строке, которая в этом случае будет 28.

То, что вы на самом деленужно это VLOOKUP. Поскольку вы выполняете текстовый поиск (подстрока), вам нужно, чтобы ваш диапазон был текстовым, а не числовым.

Вы должны сделать следующее:

  • Добавить дополнительный столбец справа от столбца A и использовать функцию TEXT для преобразования записей в текстовую форму:

    =TEXT(A1, "@")
    
  • Теперь вы можете использовать VLOOKUP для выполнения подстроки в этом текстовом диапазоне. VLOOKUP поддерживает подстановочные знаки, когда вы не просите его выполнить точное совпадение (4-й аргумент должен быть FALSE). Вот ваша формула:

    =VLOOKUP("*" & C1 & "*",$B:$B,1,FALSE)
    

Обратите внимание, что я передал столбец B (текстовый столбец) в качестве диапазона поиска, тогда как C1 - это ячейка, содержащая нужный текстдля поиска.

Этот метод также имеет дополнительное преимущество, заключающееся в том, что он возвращает фактическую сопоставленную запись из диапазона, поэтому вам не нужно искать ее вручную.

Как только у вас есть результаты, выможет применить условное форматирование к нему.

...