Страницы: 1
RSS
Поиск в тексте неточных совпадений
 
Доброй ночи, коллеги!
Столкнулся с задачей, не могу решить

Хочу проверить два массива (C12:C299) и (E3:E9) на предмет схожести слов (неточный - приблизительный поиск) и вывод в результат наиболее похожей из массива (E3:E9). В лоб с помощью FindSame не получилось
Затем выделил массив "ключ1" (F3:F9) и "ключ2" (G3:G9) из (E3:E9) и по ним нужно проверить массив (C12:C299) и вывести результат из массива (E3:E9)
Поиск усложняется тем что, он приблизительный. Можно конечно создать массив ключ1 и ключ2 точных вхождений, но что то муторно как то. Может просто без окончаний (цен вместо цена, или с помощью операторов цен*)?

Помогите разобраться и решить проблемку
Изменено: gany - 02.05.2015 19:14:34
 
у вас второй ключ всегда "двер"? а зачем он тогда...
Код
=ИНДЕКС($E$1:$E$9;СУММПРОИЗВ(ЕЧИСЛО(ПОИСК(ПРОПИСН($F$3:$F$9);ПРОПИСН(C12)))*СТРОКА($F$3:$F$9)))

для поиска по одному ключу, протяните вниз
Однако, если в проверяемом диапазоне встречается несколько ключей, (Входные двери в квартиру), то непонятно, какой из вариантов объявлений выбирать. Пока этот момент не оптимизировал.
F1 творит чудеса
 
второй массив "ключ2" также может быть разным, потому отбор должен происходить желательно по двум массивам "ключ1" и "ключ2", если такой задан  
 
Максим, уже огромное спасибо - большой объем работы уже решен, но все же рутина остается. Если проверяемом массиве встречаются 2 значения из массива "ключ1" тогда excel не понимает что ему ставить.

Можно ли этот выбор помочь ему сделать?        
Изменено: gany - 28.04.2015 15:39:56
 
Скрытый текст
 
Цитата
gany написал: Можно ли этот выбор помочь ему сделать?
Можно. А критерий какой? Первое объявление брать, или второе...
F1 творит чудеса
 
Первое  
 
формула массива (для одного ключа)
Код
=ИНДЕКС($E$3:$E$9;ПОИСКПОЗ(1;Ч(ЕЧИСЛО(ПОИСК(ПРОПИСН($F$3:$F$9);ПРОПИСН(C12))));0))

лучше ее использовать вместо предыдущей

для двух ключей:
Код
=ИНДЕКС($E$3:$E$9;ПОИСКПОЗ(1;ЕЧИСЛО(ПОИСК(ПРОПИСН($F$3:$F$9);ПРОПИСН(C35)))*ЕЧИСЛО(ПОИСК(ПРОПИСН($G$3:$G$9);ПРОПИСН(C35)));0))

если нужно вхождение ключа1 И ключа2

Код
=ИНДЕКС($E$3:$E$9;ПОИСКПОЗ(1=1;(ЕЧИСЛО(ПОИСК(ПРОПИСН($F$3:$F$9);ПРОПИСН(C35)))+ЕЧИСЛО(ПОИСК(ПРОПИСН($G$3:$G$9);ПРОПИСН(C35))))>0;0))

если нужно вхождение ключа1 ИЛИ ключа2
F1 творит чудеса
 
Максим, попробовал и получил ошибку  #Н/Д по всем трем формулам
Что может быть не так?  
 
формулы массива вводятся при помощи сочетания Ctrl-Shift-Enter
там проверьте еще в формулах ссылки на столбец С - чтобы с правильной ячейки начинать
F1 творит чудеса
 
Максим, спасибо огромное - задача решена  
 
Здравствуйте Максим!  

Есть небольшое неудобство, перебор значений из массива "ключ1" всегда начинается с начала с первой позиции в массиве из-за чего тексты объявлений в результирующем массиве E, чаше всего из первых пяти вариантов объявлений

Например "входные двери для коттеджа" в результате проверки по "ключу1" находит соответствие "входные" и "коттеджа" и выбирает первое

Что нужно поменять в формуле, чтобы при таком варианте в результате выводился второй вариант "коттеджа"?
 
Изменено: gany - 29.04.2015 22:50:20
 
Думаю, что в ваших целях оптимальное решение - отсортировать ключи по убыванию частотности запросов. Тогда первыми будут выводиться объявления для низкочастотного "коттеджа".
Если это не подходит, то вот такая формула будет брать не первое, а последнее совпадение ключа:
Код
=ПРОСМОТР(2;1/Ч(ЕЧИСЛО(ПОИСК(ПРОПИСН($F$3:$F$9);ПРОПИСН(C12))));$E$3:$E$9)

Формулу не проверял, проверьте сами. Это для поиска по 1 ключу
F1 творит чудеса
 
Максим, премного благодарствую! Сегодня снова воспользовался файлом с вашими формулами.
Большой массив информации действительно обрабатывается за несколько минут

Еще раз большое спасибо

   
Страницы: 1
Наверх