Это довольно легко сделать с помощью одних только формул, если вы не слишком заботитесь о возможном неправильном нахождении частей слов. Игнорируйте это предостережение на секунду. Во-первых, вот формула, которая сообщит вам, найдена ли какая-либо из нескольких строк где-либо в исходной строке:
=OR(NOT(ISERROR(FIND(<array of strings to look for>,<string to look in>))))
Это нужно ввести как формулу массива, чтобы она работала. Вы делаете это, вводя его с помощью Ctrl-Shift-Enter. Чтобы понять, как это работает, рассмотрим, что делает Excel при оценке реального примера:
=OR(NOT(ISERROR(FIND({"a","b","c"},"q b q"))))
'НАЙТИ' находит положение одной строки в другой. При вызове с массивом в качестве первого аргумента возвращается массив позиций (или #ЗНАЧ!, если строка поиска не найдена). Вы можете проследить оценку, введя эту формулу, а затем используя клавишу F9 для выражений внутри нее:
=OR(NOT(ISERROR({#VALUE!,3,#VALUE!})))
=OR(NOT({TRUE,FALSE,TRUE}))
=OR({FALSE,TRUE,FALSE})
=TRUE
Итак, для вашего примера предположим, что ваши строки, которые вы хотите найти, были в $B$6:$B$8, ваши рабочие строки — в $D$2:$D$3, а ваши игровые строки — в $E$2:$E$3. можно формулу поставить
=OR(NOT(ISERROR(FIND(D$2:D$3,$B6))))
в ячейке D6 введите ее как формулу массива, а затем перетащите ее через диапазон D6:E8, чтобы найти, в каких строках в B были рабочие или игровые слова. Затем вы можете использовать эти результаты для управления дальнейшими формулами или условным форматированием.
Однако, как упоминалось выше, вы заметите, что любая подстрока в искомой строке будет найдена, поэтому
=OR(NOT(ISERROR(FIND({"a","b","c"},"bad"))))
будет оцениваться как ИСТИНА. (И если ваш забавный список включает «id», «id» в «davids» будет совпадать.)
Как это часто бывает с Excel, если вы делаете что-то понятное с ограниченным набором данных, вам может быть все равно. Но это может помешать попытке использовать формулу такого рода как часть общего «приложения», в котором есть пользователи, которые не знают причудливых трюков с массивами или точно того, что делает «НАЙТИ». (Вы можете как-то обойти это, поставив пробел после слов поиска и т. д., но это просто более таинственное вуду, ожидающее взлома, если вы передадите его кому-то другому.) Однако для быстрого и грязного сканирования это нормально. .
person
jtolle
schedule
22.03.2011