во вложении исходная таблица - выгружается с источника фактическая таблица - то, что я смог сделать желаемая таблица - то, что хочу сделать суть в том, что мне нужно идентифицировать ячейку с текстом по ключевому слову и присвоить это ключевое слово адресу (красный диапазон в желаемой таблице) в реальной фактической таблице 1 000 000 ячеек, анализ её занимает продолжительное время в желаемой таблице ячеек будет на 3 порядка меньше если можно, без программирования, только функциями
Налепил формулу массива, вроде то что нужно, но думаю на одном миллионе будет долго. Но такая формула споткнется на таком тексте например "Раз семья" выдаст "семь" вместо "раз".
суть в том, чтобы вообще не использовать фактическую таблицу нужно из исходной таблицы получить желаемую фактическую таблицу можно анализировать, но долго, поэтому и хочу избавится от лишних ячеек
Ну тогда такой вариант, используя одно имя (хотел использовать его в функции ВЫБОР, но не получилось, так что можно его заменить абсолютным диапазоном), использовал упомянутую ранее функцию ВЫБОР, вашу связку ЕСЛИ+ЕСЛИОШИБКА+НАЙТИ, и СЖПРОБЕЛЫ (т.к. у меня в диапазоне добавлены пробелы в начале и конце каждого текста)
не могу понять, как функцию НАЙТИ ты заставил работать с массивом у меня не получалось " "&'таблица исходная'!B2&" " - что это такое?
и еще не могу понять смысл СТОЛБЕЦ(A1:J1) в СУММ какой-то странно выбранный диапазон.
вот еще какой вопрос: $D$1;$E$1;$F$1;$G$1;$H$1;$I$1;$J$1;$K$1;$L$1;$M$1 - можно ли прописать короче? пытался сделать что-то типа $D$1:$M$1 - не получилось просто в реальной задаче таких критериев не десять, а 170
a0512 написал: " "&'таблица исходная'!B2&" " - что это такое?
это к тексту, в котором ищем, я добавил вначале и в конце по одному пробелу, чтобы искать слова "пробел&раз&пробел" это как раз для того чтобы он слово семь не находил в восемь.
Цитата
смысл СТОЛБЕЦ(A1:J1) в СУММ
там идет перемножение двух массивов одинаковой величины СТОЛБЕЦ($A1:$J1) это как-бы массив констант {1;2;3;4;5;6;7;8;9;10} чтобы при перемножении с массивом например {0;0;0;1;0;0;0;0;0;0} он выдавал массив {0;0;0;4;0;0;0;0;0;0} который в сумме даст 4 как номер_индекса для функции ВЫБОР.
Цитата
можно ли прописать короче?
Я не смог, тоже хотел прописать диапазон предварительно созданным именем Раз_десять но к сожалению функция ВЫБОР не воспринимает его как диапазон, т.е. она может выбрать диапазон как аргумент (можно в справке почитать). В общем нужно еще голову поломать чтобы заменить ВЫБОР чем-нить другим.
Цитата
как функцию НАЙТИ ты заставил работать с массивом
Для этого и пришлось вводить формулу массива (вводится нажатием ctrl+shift+enter)
Михаил С.,Классно! Эх учиться мне еще и учиться, все верно, дипазон по возрастанию, наиболее близкое к искомому, но меньше искомого, да ПРОСМОТР векторная форма самое-то! Только автору нужно будет 99 заменить на 170 (если как он утверждает:
Цитата
a0512 написал: в реальной задаче таких критериев не десять, а 170
Ну и само-собой создать новое имя из диапазона (не забыть поставить в каждом критерии пробелы перед и после)
GeorgeDark написал: Только автору нужно будет 99 заменить на 170
Нет, не нужно. Только если строка в В2 длинная (более 100 знаков, и это самое "раз" находится далее 99 знака. Для верности можно поставить 999, или любой число, заведомо большее длины строки. ПОИСК(Раз_Десять;" "&'таблица исходная'!B2&" ") вернет массив из множества ошибок и одного числа; ПРОСМОТР ошибки игнорирует, поэтому найдет ближайшее меньшее искомого - в данном единственное.
Михаил С. написал: Только если строка в В2 длинная (более 100 знаков, и это самое "раз" находится далее 99 знака
Ах да, это я еще видимо не отошел от своего метода, все еще зацикленно думал над своим массивом из нулей и одной цифры, сейчас присмотрелся к Вашей формуле и понял что затупил )) тут же ПОИСК ищет позицию начала вхождения икомого текста .