Добавление функции OR в оператор IF - PullRequest
0 голосов
/ 17 января 2020

Как мне заставить эту формулу искать 567 или 676 или 342 вместо просто 567 , какой она является в данный момент ,

=IF(ISNUMBER(SEARCH(""*567*"",B:B)),""Traction"","""")

Ответы [ 3 ]

2 голосов
/ 17 января 2020

Вы можете оценить более одного предложения, используя OR:

=IF(OR(ISNUMBER(SEARCH("567",B:B)),ISNUMBER(SEARCH("676",B:B)),ISNUMBER(SEARCH("342",B:B))),"Traction","")

Использование OR позволяет указать два или более предложений, которые будут возвращать true, если любой из них истинны:

=IF(OR(clause_1, clause_2, clause_3, etc.), true, false)

Функция OR задокументирована здесь .

2 голосов
/ 17 января 2020

В качестве формулы вы можете просто попробовать:

=IF(SUM(--ISNUMBER(SEARCH({567;676;342},B:B)))>0,"Traction","")

Мы должны использовать точку с запятой для оценки каждого элемента в массиве по всем значениям в диапазоне B:B.

Примечание 1: Это формула CSE, которую необходимо ввести с помощью Ctrl Shifter Введите

Примечание 2: Если это действительно продолжение вашего предыдущего вопроса, вам нужно будет ввести его следующим образом:

<YourInputRange>.FormulaArray = "=IF(SUM(--ISNUMBER(SEARCH({""567"";""676"";""342""},B:B)))>0,""Traction"","""")"

Или, в зависимости от вашего Locale:

<YourInputRange>.FormulaArray = "=IF(SUM(--ISNUMBER(SEARCH({""567"",""676"",""342""},B:B)))>0,""Traction"","""")"

Примечание 3: Согласно моему предыдущему ответу, вы сравниваете целые столбцы в формуле массива. Имейте в виду, что это повлияет на вашу производительность. Я бы посоветовал вам следующий шаг - получить динамические c Range объекты.


EDIT

Небольшое объяснение того, почему нам нужно TRANSPOSE значения в столбце B:B ИЛИ в нашем массиве. Давайте представим некоторые примеры данных В B1:B3:

enter image description here

Давайте сосредоточимся на нашей формуле; IF(SUM(--ISNUMBER(SEARCH({567,676,342},B1:B3)))>0,"Traction",""). Обратите внимание, как мы сейчас сравниваем два вертикальных диапазона. Таким образом, в основном то, что мы просим, ​​формула может выглядеть так:

enter image description here> enter image description here

Ответ трижды отрицательный! Таким образом, в этом случае результат будет "".

Теперь давайте сравним вертикальный массив с горизонтальным, наша формула теперь выглядит так: =IF(SUM(--ISNUMBER(SEARCH({567;676;342},B1:B3)))>0,"Traction",""), чтобы визуализировать это, вы можете подумать о матрице:

enter image description here

В нашей матрице есть одно положительное совпадение! Теперь, поскольку это сравнивает два массива, нам нужно CSE формула. И именно поэтому у нас скорее есть указанный диапазон, например B1:B3, вместо полной ссылки на столбец.

1 голос
/ 17 января 2020

Попробуйте это. Вам не нужны символы подстановки с поиском.

=IF(COUNT(SEARCH({"567","676","342"},B:B)),"Traction","")
...