Помогите разобраться, почему не работает найденное на форуме решение. Точнее, иногда работает, а иногда нет. Задача: есть список паттернов (потенциальных вхождений), которые надо найти в строке. Желаемый результат: ИСТИНА если хотя бы один паттерн найден, ЛОЖЬ, если не найден ни один. (конечный результат - условное форматирование списка значений, найдены паттерны или нет)
В прилагаемом файле формула в столбце 3 дает нужный результат (это копия формулы из найденного решения), а более простая в столбце 2 не работает (ищет только первый паттерн).
Если прогнать формулы через пошаговое вычисление, то видно, что для формулы из столбца 3 вычисляется массив констант, а для формулы из столбца 2 - только первое значение. Причем происходит это, видимо, потому, что ссылка на массив паттернов появляется в формуле 2 раза.
UPD Еще покопался, и пришел к окончательному виду формулы, которая мне нужна, в ней ссылка резолвится в правильный массив.
Конечная-то задача решена (найти вхождение по списку), но все равно неприятно, что в некоторых случаях формула массива может не сработать, то есть не выдать массив констант при вычислении. Хорошо бы понимать на будущее - в каких именно случаях.
Bema, спасибо, увидел! То есть, ссылка резолвится правильно, просто конечное значение не-ошибочно только в том случае, если найден первый элемент из массива! (соответственно, просто формула кривая и руки)
Таким образом, проблема не в формуле [успокаивается], а в диалоге "Вычисление" (см. первый скрин), который в данном случае показал этапы вычисления неправильно. Что тоже не фонтан, конечно..
skogkatt, точно прокомментировать эту фишку не могу, но столкнулся с этим давно. И пока не знал про F2 и F, приходилось извращаться, что бы увидеть, что формула действительно работает как массивная.Вот такая формула через Вычислить формулу не работает как массивная: =ЕЧИСЛО(НАЙТИ(Условие2;A4)) А если добавить СУММПРОИЗВ, то через вычислить формулу видно, что работает как массивная: =СУММПРОИЗВ(ЕЧИСЛО(НАЙТИ(Условие2;A4))) Мой окончательный вариант формулы: =ВЫБОР(СУММПРОИЗВ(ЕЧИСЛО(НАЙТИ(Условие2;A4))*{1;2;3});"д";"сен";"ф")
=ПРОСМОТР(2;1/НАЙТИ(Условие2;A4);Условие2) не массивная формула Формулы для УФ =ИЛИ(ЕЧИСЛО(НАЙТИ(Условие2;A4))) =ИЛИ(СЧЁТЕСЛИ(A4;"*"&Условие2&"*")) =ПРОСМОТР(2;1/НАЙТИ(Условие2;A4))