Страницы: 1
RSS
объединение похожих текстовых значений в Excel
 
Добрый день!  
Нужен макрос в Excel, который бы объединял похожие текстовые значения в столбце. Есть кусок таможенной базы, 58694 строки.  
Чтобы как-то анализировать эту базу, нужно идентифицировать заполненных кривыми ручками производителей, т.е. выделить похожие названия и объединить под одним. При этом таких "групп" похожих значений может быть около сотни. Помогите, пожалуйста, до этого я объединяла значения вручную, но базы были гораздо меньше.  
 
Пример, есть вот такие строчки:  
"MLEKOVITA S.A."  
"MLEKOVITA"S.A.,РЕГИСТРАЦИОННЫЙ НОМЕР ПРЕДПРИЯТИЯ    
"MLEKOVITA S.A."  "MLEKOVITA"  
"MLEKOVITA" S.A., SPOLDZIELNIA MLECZARSKA "MLEKOVI  
"MLEKOVITA S.A",ПОЛЬША,  
 
и дальше вот такие:  
ARLA FOODS AB  
"АРЛА ФУДС АМБА"  ARLA FINELLO  
ARLA FOODS AMBA  ARLA  
ARLA FOODS AMBA  ARLA HUSHALL  
"АРЛА ФУДC АМБА"  
 
В идеале после запуска макроса:  
"MLEKOVITA S.A."  
"MLEKOVITA S.A."  
"MLEKOVITA S.A."  
"MLEKOVITA S.A."  
"MLEKOVITA S.A."  
 
и  
ARLA FOODS AB  
ARLA FOODS AB  
ARLA FOODS AB  
ARLA FOODS AB  
ARLA FOODS AB  
 
То есть группирует похожие значения и объединяет значения в каждой группе под одним обозначением (любым).  
 
Заранее огромное спасибо!
 
Пример базы? В каком Excele работаете?
 
Ну, во-первых, действительно, создайте и выложите файл-пример с сотней строк с названиями, которые требуется сгруппировать. Не самим же нам тут за вас придумывать в каких столбцах и начиная с каких строк лежат исходные данные и заполнять табличку для испытаний работы предлагаемых решений.  
Во-вторых. Поясните, как ключевое слово строки отличить от остальных строк? Т.е. какой критерий группировки?  
Слово "похоже" никому ни о чём не говорит. Это чисто субъективное понятие, зависящее от многих внешних условий.  
Я, например, не зная вашей специфики работы, могу и посчитать, что запись ООО "Рога" похожа на запись ООО "Копыта" на том основании, что в обоих записях есть слово ООО.  
Скажите, как выбрать слово-признак схожести, выложите пример и вам достаточно быстро помогут.  
А иначе ... :-(
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
http://www.planetaexcel.ru/forum.php?thread_id=22556  
Вот это поробуйте
 
Спасибо всем отозвавшимся! Функция ВПР, к сожалению, не совсем подходит, поскольку нет "верного" столбца для сравнения, а есть просто один столбец, в котором данные заполнены "с опечатками". Нужно чтобы скриптик выявлял совпадение по буквам  (например, более 5 букв совпадает или в %) и проводил группировку-замену одним текстовым значением. Дополнительно задача усложняется тем, что часть названий идет на русском, часть на англ., но это уже можно вручную дозаменить. Все равно основная часть работы - поиск по куску слова и объединение для каждой из сотни групп.    
 
Прилагаю файл. Столбцы, которые нужно "чистить", выделены желтым. Каждый столбец самостоятельный, то есть их не надо сравнивать - в одном производители, в другом марки.
 
Да, забыла ответить, что работаю в 2007 Excel.
 
pticca,  
вы недопоняли...  
Для того чтобы скрипт начал сравнивать данные с образцом (пусть по проценту совпадения) нужно ему составить таблицу образцов, с которыми он будет сравнивать...  
А это как раз и есть самая сложная работа - сформировать список образцов, по степени похожести на которые будут выбираться данные.    
А вот тут скорее всего возможна только ручная работа, т.к. тут нужен человеческий интеллект, чтобы понять, что является характерным признаком названия.  
Программа может, действуя тупо по заданному алгоритму, в анализируемом тексте:  
- убрать знаки препинания, заменив их пробелами, и разбив таким образом его на отдельные слова,  
- отбросить слова меньше некоторой минимальной длины  
- начать сравнивать каждое из оставшихся слов со словами-образцами, считая для каждого из слов количество совпавших букв  
- образец, с котором количество совпадений букв максимально, считается совпавшим.  
Примерно по такому алгоритму и работает макрос функции пользователя, который вам предложил Konstantin_ - http://www.planetaexcel.ru/forum.php?thread_id=22556  
(К стати, Konstantin_ , очень интересно задумано и выполнено. Обязательно "причешу" для себя и положу в заначку!)  
НО В ЛЮБОМ СЛУЧАЕ - НУЖЕН ОБРАЗЕЦ!
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Может это поможет, но всё равно расстановка группы вручную. Только поиск похожего текста подссвечивается макросом.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
А как Вы заносите данные в базу? Если руками, то можно сделать инструмент, который будет проверять записи и объединять их при вводе данных в базу...
 
Если Вы копируете базу на лист. Куда кнопочку ставить? Или надстройкой оформить?
 
Видимо, она улетела.. :)
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Коллеги, а разве нельзя просто прокатать циклом с if?  
что-то типа    
Dim cell As Range  
For Each cell In Selection.Cells  
If cell Like "*MLEKO*" or cell Like "*Млеко*" Then  
   cell = "MLEKOVITA S.A."  
       ElseIf cell Like "*ARLA*" or cell Like "*Арла*" Then  
       cell = "ARLA FOODS AB"  
End If  
Next cell
 
Если бы всё было так просто...  
1. Как учесть такие очень частые опечатки при ручном вводе как перестановка букв и замена русских букв на такие же по написанию латинские и наоборот.  
Я как-то пытался проанализировать в Ёкселе список того, что было введено в 1С по накладным... УЖАС! Кладовщики мало того, что считают, что если буквы внешне похожи друг на друга, то они одинаковы, так ещё и часто не различают, например 1 и I или l, 0 и О  
Так что без нечёткого поиска совпадений тут не обойтись. А это уже достаточно сложные алгоритмы. Я на них давал ссылку в теме "интеллектуальный ВПР (сопоставление ПОХОЖИХ текстов)" http://www.planetaexcel.ru/forum.php?thread_id=22556  
2. Всё так просто, как вы предлагаете только если товаров считанное на одной руке количество типов. Тогда, действительно, найдя НЕЧЁТКОЕ СОВПАДЕНИЕ, можно по нему вычислить правильное наименование.  
А если товаров хотя бы десятки, то тут уже без базы данных правильных наименований и их синонимов (наиболее употребительных аббревиатур) уже никак не обойтись.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Не знаю для кого я это делал. Видать девушке так надо. Но получилось забавно.  
Корректно Работает только в 2007. При открытии файла во вкладке Надстройки появится меню "Редактирование наименований" с двумя командами "Сортировка и группировка" и "Объединение отфильтрованных записей". Первая проста в использовании, разберетесь сами.  
 
А вот вторая команда - работает после того как Вы автофильтром (который уже стоит после выполнения первой команды) выберите все однотипные наименования из списка автофильтра. Затем активируйте команду "Объединение отфильтрованных записей", выпадет запрос на указание корректного наименования (простым кликом на ячейку) из числа отфильтрованных, OK и вот Вам праздник.  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
Виноват не посмотрел объем
Страницы: 1
Читают тему
Наверх