Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
функция НАЙТИ для массива
 
нужен совет

во вложении
исходная таблица - выгружается с источника
фактическая таблица - то, что я смог сделать
желаемая таблица - то, что хочу сделать
суть в том, что мне нужно идентифицировать ячейку с текстом по ключевому слову и присвоить это ключевое слово адресу (красный диапазон в желаемой таблице)
в реальной фактической таблице 1 000 000 ячеек, анализ её занимает продолжительное время
в желаемой таблице ячеек будет на 3 порядка меньше
если можно, без программирования, только функциями
Изменено: a0512 - 16 Мар 2015 17:31:38
 
Миллион функциями - это долго, макросом будет быстрее.
Но что нужно сделать - я не понял. Или понял... Не понял...
 
Налепил формулу массива, вроде то что нужно, но думаю на одном миллионе будет долго.
Но такая формула споткнется на таком тексте например "Раз семья" выдаст "семь" вместо "раз".
Изменено: GeorgeDark - 17 Мар 2015 07:25:31
 
Переделал формулу в фактической таблице, теперь "раз семья" выдает правильно!
 
суть в том, чтобы вообще не использовать фактическую таблицу
нужно из исходной таблицы получить желаемую
фактическую таблицу можно анализировать, но долго, поэтому и хочу избавится от лишних ячеек
 
Ну тогда такой вариант, используя одно имя (хотел использовать его в функции ВЫБОР, но не получилось, так что можно его заменить абсолютным диапазоном), использовал упомянутую ранее функцию ВЫБОР, вашу связку ЕСЛИ+ЕСЛИОШИБКА+НАЙТИ, и СЖПРОБЕЛЫ (т.к. у меня в диапазоне добавлены пробелы в начале и конце каждого текста)
 
GeorgeDark, круть! спасибо

не могу понять, как функцию НАЙТИ ты  заставил работать с массивом
у меня не получалось
" "&'таблица исходная'!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 - 17 Мар 2015 11:35:35
 
Цитата
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;ПОИСК(Раз_Десять;" "&'таблица исходная'!B2&" ");Раз_Десять))
простая, по файлу пример (массив НАЙТИ 3).xlsx (16.15 КБ)
 
Михаил С.,Классно! Эх учиться мне еще и учиться, все верно, дипазон по возрастанию, наиболее близкое к искомому, но меньше искомого, да ПРОСМОТР векторная форма самое-то! Только автору нужно будет 99 заменить на 170 (если как он утверждает:
Цитата
a0512 написал: в реальной задаче таких критериев не десять, а 170
Ну и само-собой создать новое имя из диапазона (не забыть поставить в каждом критерии пробелы перед и после)
 
Михаил С., GeorgeDark,
Большое спасибо!
 
Цитата
GeorgeDark написал: Только автору нужно будет 99 заменить на 170
Нет, не нужно. Только если строка в В2 длинная (более 100 знаков, и это самое "раз" находится далее 99 знака. Для верности можно поставить 999, или любой число, заведомо большее длины строки.
ПОИСК(Раз_Десять;" "&'таблица исходная'!B2&" ") вернет массив из множества ошибок и одного числа;
ПРОСМОТР ошибки игнорирует, поэтому найдет ближайшее меньшее искомого - в данном единственное.
 
Цитата
GeorgeDark написал: (не забыть поставить в каждом критерии пробелы перед и после)
можно без пробелов; тогда формула будет иметь такой вид:
=ПРОСМОТР(99;ПОИСК(" "&Раз_Десять&" ";" "&'таблица исходная'!B2&" ");Раз_Десять))

ps. и критерии не обязательно в строку, можно и в столбец....
Изменено: Михаил С. - 17 Апр 2015 09:48:12
 
Цитата
Михаил С. написал: ps. и критерии не обязательно в строку, можно и в столбец....
вот я в столбец и сделал
проще добавлять новые и анализировать сразу их количество
 
Цитата
Михаил С. написал: Только если строка в В2 длинная (более 100 знаков, и это самое "раз" находится далее 99 знака
Ах да, это я еще видимо не отошел от своего метода, все еще зацикленно думал над своим массивом из нулей и одной цифры, сейчас присмотрелся к Вашей формуле и понял что затупил )) тут же ПОИСК ищет позицию начала вхождения икомого текста :oops:.
Страницы: 1
Читают тему (гостей: 1)