Функция поиска / поиска в Excel, возвращающая ложные отрицания - PullRequest
0 голосов
/ 31 января 2020

Эта простая проблема делает меня совершенно тупым. Я пытаюсь найти список элементов в одной ячейке, и по какой-то причине это работает только часть времени.

enter image description here

Столбцы A: C все отформатированы как текст, и в столбце A. нет пробелов / пробелов в начале / начале.

Замена search на find возвращает то же самое, что и при использовании именованного диапазона вместо A2:A4.

Поиск одного / указанного элемента c (=SEARCH($A$3,B5)) работает просто отлично .

Ответы [ 2 ]

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

Ваша формула возвращает массив значений, который вы можете увидеть, если используете инструмент «Оценка формул» на панели формул. На рабочем листе вы увидите только первый элемент массива.

Развернутый, возврат выглядит так:

enter image description here

Обратите внимание, что вы видите «число» только в том случае, если оно находится первым в массиве (например, Yellow)

Если все, что вам нужно, это ответ ИСТИНА / ЛОЖЬ, то вам нужно удалить ошибки и OR результат :

=OR(ISNUMBER(SEARCH($A$2:A$4,B2)))

Это формула массива. В некоторых версиях Excel вам может потребоваться ввести / подтвердить формулу массива , удерживая нажатой клавишу ctrl + shift при нажатии , введите . Если вы сделаете это правильно, Excel поместит фигурные скобки {...} вокруг формулы, отображаемой в строке формул.

enter image description here

Если вы хотите что-то еще, пожалуйста, уточнить.

Редактировать: ОП пояснил, что он действительно хочет вернуть цвет. Предполагая, что должен быть возвращен только один цвет, следующий цвет вернет первый цвет:

    =IFERROR(INDEX($A:$A,AGGREGATE(15,6,1/(ISNUMBER(SEARCH($A$2:A$4,B2)))*ROW($A$2:$A$4),1)),"")

enter image description here

В случае нескольких цветов, и вы хотите вернуть их все, было бы лучше, если у вас есть Excel 2016+ с функцией TEXTJOIN. Если вы это сделаете, вы можете использовать что-то вроде:

=TEXTJOIN(", ",TRUE,IFERROR(INDEX($A:$A,AGGREGATE(15,6,1/(ISNUMBER(SEARCH($A$2:A$4,B2)))*ROW($A$2:$A$4),{1,2,3})),""))

В приведенной выше формуле константа массива {1,2,3} относится к числу возможных записей в find_text. Если это число больше трех или будет меняться, замените константу массива формулой для создания соответствующего массива.

Одна из таких формул может быть:

ROW($A$1:INDEX($A:$A,ROWS(find_text)))

Вся формула тогда может быть:

=TEXTJOIN(", ",TRUE,IFERROR(INDEX($A:$A,AGGREGATE(15,6,1/(ISNUMBER(SEARCH(find_text,B2)))*ROW(find_text),ROW($A$1:INDEX($A:$A,ROWS(find_text))))),""))

enter image description here

0 голосов
/ 31 января 2020

1] Позиция Find_text

В C2, формула скопирована:

=LOOKUP(9^9,SEARCH(A$2:A$4,B2))

2] Результат Find_text

В D2, формула скопирована вниз:

=LOOKUP(9^9,SEARCH(A$2:A$4,B2),A$2:A$4)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...