|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.03.2015, 13:56 | #1 |
Новичок
Джуниор
Регистрация: 11.03.2015
Сообщений: 4
|
Поиск частичных совпадений и подстановка значения
Добрый день!
Задача такая. Есть 2 прайса, названия позиций в них несколько отличаются. Например: Power Extreme Moisture Toner [Secret Key] | Тонер увлажняющий и СК Power Тонер интенсивно увлажняющий мужской Power Extreme Moisture Toner это одно и тоже. Нужно сделать так, чтобы иксель понимал, что это одно и тоже и подставлял третье значение (кол-во товара). ВПР тут не работает. Были попытки отредактировать оба файла, чтобы названия стали полностью одинаковыми, удалить все символы, чтобы остались только латинские. Но во втором случае остается первое слово, в данном примере "Power". Как вариант, может, подскажете, как удалить это дублирующее слово, тогда вопрос будет решен, обходным путем, но тоже хорошо |
11.03.2015, 14:25 | #2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
похоже, что тема сравнения прайсов разных продавцов неисчерпаема...
умом же понятно, что это одно и тоже, как этому научить программу, и желательно, чтобы на определение всех пар в двух прайсах уходило меньше суток расчетов
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
11.03.2015, 15:09 | #3 |
Пользователь
Регистрация: 11.01.2015
Сообщений: 35
|
Где-то была ссылка на чудо формулу определяющую латинские буквы 65-122, как найду скину
|
11.03.2015, 15:25 | #4 | |
Новичок
Джуниор
Регистрация: 11.03.2015
Сообщений: 4
|
Цитата:
Function Del_Rus(sStr As String) Dim li As Long For li = 192 To 255 sStr = Replace(sStr, Chr(li), "") Next li sStr = Replace(sStr, Chr(168), "") sStr = Replace(sStr, Chr(184), "") End Function Все хорошо, только остается вот так: Power Power Extreme Moisture Toner И надо удалить дубль "Power". При чем, обязательно первый (это важно для других названий). Есть макрос Sub bb() Dim c As Range, x With CreateObject("scripting.dictionary" ) For Each c In Selection .RemoveAll For Each x In Split(c) .Item(x) = 0 Next c = Join(.keys) Next End With End Sub Но он удаляет второе слово. |
|
11.03.2015, 15:46 | #5 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
видите-ли, innx,
Вы затронули вопрос на решение которого нужно не 15-20 минут, а несколько недель, или несколько месяцев, а, может, и несколько лет и то... будет получен не 100% результат, а некое приближение к нему, да Бог с вероятностью в 95 или более процентов... а вероятность 95 процентов - это значит что в прайсе на 1тыс.строк, в 50 случаях макрос не найдет соответсвия между "одинаковыми" значениями или опознает разные, как одинаковые. всем кто станет на этот путь - удачи! а возможно, я сильно сгустил краски и сегодня к вечеру мы сможем посмотреть макрос не делающий промахов
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
11.03.2015, 18:14 | #6 |
Новичок
Джуниор
Регистрация: 11.03.2015
Сообщений: 4
|
Возможно, кому-то информация будет полезной. Вопрос решен следующим образом:
1. В таблице №1 удаляем все русские символы + плюс другие ненужные символы )\/-., 2. В таблице №2 делаем тоже самое. Function Del_Rus(sStr As String) Dim li As Long For li = 192 To 255 sStr = Replace(sStr, Chr(li), "") Next li sStr = Replace(sStr, Chr(168), "") sStr = Replace(sStr, Chr(184), "") Del_Rus = sStr End Function 3. Во второй таблице удаляем первое слово-дубль (Power) с помощью макроса: Sub bb() Dim c As Range, x With CreateObject("scripting.dictionary" ) For Each c In Selection .RemoveAll For Each x In Split(c) .Item(x) = 0 Next c = Join(.keys) Next End With End Sub 4. Чистим от ненужных пробелов СЖПРОБЕЛЫ Ну а дальше работает ВПР. |
11.03.2015, 18:56 | #7 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
вот в 3-х разных прайсах написано:
D-Link DES-1005A D-Link 5 Port Gigabit Switch DES-1005A D-Link - 5-Port 10/100/1000 Switch DES-1005A как думаете, это одно устройство? а что скажет ВПР, после всех предварительных обработок?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
11.03.2015, 21:07 | #8 |
Новичок
Джуниор
Регистрация: 11.03.2015
Сообщений: 4
|
Совершенно очевидно, что Ваш случай не имеет ничего общего с моим. К сожалению, ничем помочь не могу.
|
12.03.2015, 10:53 | #9 | |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Цитата:
1. D-Link DES-1005A 2. D-Link 5 Port Gigabit Switch DES-1005A 3. D-Link - 5-Port 10/100/1000 Switch DES-1005A одно и тоже? то-ли задача не корректно сформулирована, то-ли макросы решают что-то совершенно другое...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск в таблице произвольных строк и подстановка значения из другой | Zme | Microsoft Office Excel | 1 | 07.06.2014 10:35 |
поиск по диапазону и подстановка значения в зависимости от результата | Propinol | Microsoft Office Excel | 17 | 02.04.2012 21:35 |
Поиск совпадений и подстановка значений | Davyd80 | Microsoft Office Excel | 3 | 29.08.2011 10:22 |
Поиск одинаковых и подстановка соответствующего значения | ягч | Microsoft Office Excel | 3 | 23.12.2010 13:44 |
Поиск % совпадений и подстановка результата | MVerhovcev | Microsoft Office Excel | 8 | 11.11.2010 13:43 |