Excel - поиск нескольких значений в строке и возврат первого - PullRequest
1 голос
/ 22 января 2020

Мне нужна функция для поиска организационных аббревиатур в тексте и возврата первого, который появляется. Я попытался решить эту проблему с помощью вложенного предложения if, но в нем есть логическая ошибка.

=IF(ISNUMBER(SEARCH("BZC";I5)); "Finanz"; IF(ISNUMBER(SEARCH("AZC" /1";I5));"IT";""))

Он ищет BZ C и AZ C по желанию и возвращает название организации. Однако он не возвращает первое совпадение в строке. Так как BZ C является первым поиском, он всегда будет возвращаться, если он находится в строке, даже если это не первая аббревиатура org.

Какие функциональные возможности Excel можно использовать для решения этой проблемы? Мне в основном нужен массив переменных, которые функция должна выполнить поиск и вернуть первую найденную.

Редактировать:

Я пытался реализовать формулу Форма Юстина М.К. Помимо того факта, что мне все еще нужно выяснить значение формулы (iferror, mid, small), в моем примере возвращается # N / A. #N/A Есть ли для этого определенная причина?

1 Ответ

4 голосов
/ 22 января 2020

Надеюсь, я правильно понял ваш запрос. Вот формула массива, которую вы можете попробовать (введите, используя Ctrl + Shift + Enter):

=CHOOSE(MATCH(MID(A1,SMALL(IFERROR(SEARCH({"BZC","AZD","xxx"},A1),""),1),3),{"BZC","AZD","xxx"},0),"Finanz","IT","Other")

Возможно, вам придется изменить , на ;, чтобы соответствовать вашим региональным настройкам.

Вы можете легко расширить список элементов поиска, изменив содержимое фигурных скобок { }, а также расширив результаты MATCH в самом конце формулы.

Вот пример результат:

enter image description here

Редактировать: Вот скорректированное решение, которое игнорирует длину вашего кода (предыдущее решение предполагало, что код всегда 3 символа). На этот раз это не формула массива, поэтому вы можете ввести ее как есть. Кроме того, я подозреваю, что вы должны , а не изменить , на ; внутри фигурных скобок (это приведет к изменению формулы от разделителя столбца к строке и, следовательно, он перестанет работать). Оставшиеся , можно преобразовать в ;, если это имеет смысл.

=CHOOSE(MATCH(TRIM(LEFT(SUBSTITUTE(RIGHT(A1,LEN(A1)-SUMPRODUCT(SMALL(IFERROR(SEARCH({"BZC","AZD","XYZX/1","NP-HSD"},A1),""),1))+1)," ",REPT(" ",255)),255)),{"BZC","AZD","XYZX/1","NP-HSD"},0),"Finanz","IT","Other1","Other2")

Результат:

enter image description here

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