Уважаемые форумчане, помогите, натолкните на мысль - как можно решить проблему с дубликатами, которые не совсем дубликаты )) Некорректно созданная база данных, с которой теперь приходится мучаться мне. Компания ООО Авангард Лизинг в базе может встречаться несколько раз как: ООО Авангард-Лизинг, Авангард лизинг ООО, АВАНГАРД ЛИЗИНГ 000 и другие вариации. Естественно, данные по этой одной компании нужно суммировать. Вопрос: как произвести поиск и суммирование дубликатов, которые с точки зрения Excel не дубликаты вовсе?
Уважаемые форумчане, помогите, натолкните на мысль - как можно решить проблему с дубликатами, которые не совсем дубликаты )) Некорректно созданная база данных, с которой теперь приходится мучаться мне. Компания ООО Авангард Лизинг в базе может встречаться несколько раз как: ООО Авангард-Лизинг, Авангард лизинг ООО, АВАНГАРД ЛИЗИНГ 000 и другие вариации. Естественно, данные по этой одной компании нужно суммировать. Вопрос: как произвести поиск и суммирование дубликатов, которые с точки зрения Excel не дубликаты вовсе?lelelik
Серега, а ты представляешь себе сколькими возможными вариантами можно записать то же самое ООО Авангард-Лизинг ? А если ещё и пробелы не по одному наставлены? А если контрагентов хотя бы несколько десятков? Это абсолютно нереально! Тут надо нечёткий поиск применять. А это мы ещё с Володей не докрутили до конца. Хотя наработки уже есть в топике Простая метрика сходства текстовых строк (Нечеткий поиск - варианты решения) Ну, на крайний случай можно еще попробовать заюзать мой Удобный автофильтр и руками фильтровать-править.
Серега, а ты представляешь себе сколькими возможными вариантами можно записать то же самое ООО Авангард-Лизинг ? А если ещё и пробелы не по одному наставлены? А если контрагентов хотя бы несколько десятков? Это абсолютно нереально! Тут надо нечёткий поиск применять. А это мы ещё с Володей не докрутили до конца. Хотя наработки уже есть в топике Простая метрика сходства текстовых строк (Нечеткий поиск - варианты решения) Ну, на крайний случай можно еще попробовать заюзать мой Удобный автофильтр и руками фильтровать-править.Alex_ST
У меня по работе что-то подобное используется - есть список, который загоняю в словарь, из которого извлекаю правильную пару, или пишу "не найдено". В принципе, можно использовать ВПР(), но у меня там данные из сложного текста макросом тянутся. У кого "не найдено", тех оператор оперативно (потому и оператор ) добавляет в список с нужной парой. В итоге со временем "не найдено" встречается всё реже.
У меня по работе что-то подобное используется - есть список, который загоняю в словарь, из которого извлекаю правильную пару, или пишу "не найдено". В принципе, можно использовать ВПР(), но у меня там данные из сложного текста макросом тянутся. У кого "не найдено", тех оператор оперативно (потому и оператор ) добавляет в список с нужной парой. В итоге со временем "не найдено" встречается всё реже.Hugo
Согласен с Сергеем: 100% гарантию от ошибок дает только вручную составленная таблица перекодировки наименований.
Но если цена ошибки не очень велика, а вариантов - туча, то вполне можно использовать нечёткий поиск с ограничением минимального сходства, скажем, 90%. В этом случае, существенным недостатком моей методы может оказаться игнорирование цифровых символов - различия в наименованиях, содержащих разные цифры определяться не будут.
Согласен с Сергеем: 100% гарантию от ошибок дает только вручную составленная таблица перекодировки наименований.
Но если цена ошибки не очень велика, а вариантов - туча, то вполне можно использовать нечёткий поиск с ограничением минимального сходства, скажем, 90%. В этом случае, существенным недостатком моей методы может оказаться игнорирование цифровых символов - различия в наименованиях, содержащих разные цифры определяться не будут.Формуляр
Я обычно пользуюсь таким простеньким вариантом. Конечно, всего-всего не находит, но почти всегда меня устраивает. Плюс - простота и возможность ручной корректировки. Минус - ищет только одну организацию (или две) за один раз.
Это не для проверки, это для составления списка соответствий (как говорится - день потерять, зато потом за 5 минут долететь). А по этому списку потом обычным ВПРом. А если где не нашел - значит, новая организация или новое написание старой.
Я обычно пользуюсь таким простеньким вариантом. Конечно, всего-всего не находит, но почти всегда меня устраивает. Плюс - простота и возможность ручной корректировки. Минус - ищет только одну организацию (или две) за один раз.
Это не для проверки, это для составления списка соответствий (как говорится - день потерять, зато потом за 5 минут долететь). А по этому списку потом обычным ВПРом. А если где не нашел - значит, новая организация или новое написание старой._Boroda_
Серега, а ты представляешь себе сколькими возможными вариантами можно записать то же самое ООО Авангард-Лизинг ?
Alex_ST, Вы меня поняли как никто другой! Более 7 тыщ. строк... Вариант справочника для меня не универсален, поскольку я только выгружаю данные из базы, каждый раз отсортированные, мне не отследить появления новых компаний или старых, забитых еще одной позицией... Буду вникать в "нечеткий способ"!
Quote (Alex_ST)
Серега, а ты представляешь себе сколькими возможными вариантами можно записать то же самое ООО Авангард-Лизинг ?
Alex_ST, Вы меня поняли как никто другой! Более 7 тыщ. строк... Вариант справочника для меня не универсален, поскольку я только выгружаю данные из базы, каждый раз отсортированные, мне не отследить появления новых компаний или старых, забитых еще одной позицией... Буду вникать в "нечеткий способ"!lelelik
К стати, ИМХО, главный вопрос - цель, которой добивается lelelik: 1. Продолжать пользоваться так коряво заполненной базой данных и соответственно и далее допускать ввод данных "абы как". 2. Потратить некоторое время на обработку и коррекцию информации, а потом уже вести базу данных корректно, не допуская ручного ввода чего попало.
К стати, ИМХО, главный вопрос - цель, которой добивается lelelik: 1. Продолжать пользоваться так коряво заполненной базой данных и соответственно и далее допускать ввод данных "абы как". 2. Потратить некоторое время на обработку и коррекцию информации, а потом уже вести базу данных корректно, не допуская ручного ввода чего попало.Alex_ST
Предположу, что описанная ситуация очень похожа на ту, что у меня на работе творится. Есть довольно древняя система учета, в которую можно ручками вводить любые наименования организации. Что диспетчера, сверяясь с накладными, и делают. А вот тут уже, сами понимаете, может быть все, что угодно. Как-то, ради интереса, посмотрел - максимум разночтений названия одной организации - 210!!! различных наименований. Сам я поправить алгоритм проверки ввода не могу - не моя это работа, я не разработчик. Диспетчеров наказывать - тоже не в моей власти, поэтому приходится работать с тем, что есть. Да, забыл сказать, количество - не какие-то 7000 записей, а несколько миллионов. Так вот, есть таблица соответствия, по которой все различные названия одной организации приводятся к одному. А если название в таблице не встречается, то оно выводится в отдельную таблицу, ему вручную ищется правильное название и эти данные добавляются в таблицу соответствия. Я считаю, что только так можно добиться 100%-ого определения. Забыл добавить, что все это делается SQL-запросами, база соответствия и промежуточные базы в Access, а выход всего этого безобразия - в Excel.
Предположу, что описанная ситуация очень похожа на ту, что у меня на работе творится. Есть довольно древняя система учета, в которую можно ручками вводить любые наименования организации. Что диспетчера, сверяясь с накладными, и делают. А вот тут уже, сами понимаете, может быть все, что угодно. Как-то, ради интереса, посмотрел - максимум разночтений названия одной организации - 210!!! различных наименований. Сам я поправить алгоритм проверки ввода не могу - не моя это работа, я не разработчик. Диспетчеров наказывать - тоже не в моей власти, поэтому приходится работать с тем, что есть. Да, забыл сказать, количество - не какие-то 7000 записей, а несколько миллионов. Так вот, есть таблица соответствия, по которой все различные названия одной организации приводятся к одному. А если название в таблице не встречается, то оно выводится в отдельную таблицу, ему вручную ищется правильное название и эти данные добавляются в таблицу соответствия. Я считаю, что только так можно добиться 100%-ого определения. Забыл добавить, что все это делается SQL-запросами, база соответствия и промежуточные базы в Access, а выход всего этого безобразия - в Excel._Boroda_
А если название в таблице не встречается, то оно выводится в отдельную таблицу, ему вручную ищется правильное название
А вот тут процедура нечёткого поиска была бы вполне полезна.
Quote (lelelik)
Естественно, данные по этой одной компании нужно суммировать.
Quote (lelelik)
Вариант справочника для меня не универсален
Что касается исходной задачи, то независимо от способа сравнения, она в принципе не имеет устойчивого решения, т.к. при отсутствии постоянного справочника результат кластеризации наименований по степени сходства будет зависеть от наличия/отсутствия тех или иных конкретных наименований в общем списке.
Quote (_Boroda_)
А если название в таблице не встречается, то оно выводится в отдельную таблицу, ему вручную ищется правильное название
А вот тут процедура нечёткого поиска была бы вполне полезна.
Quote (lelelik)
Естественно, данные по этой одной компании нужно суммировать.
Quote (lelelik)
Вариант справочника для меня не универсален
Что касается исходной задачи, то независимо от способа сравнения, она в принципе не имеет устойчивого решения, т.к. при отсутствии постоянного справочника результат кластеризации наименований по степени сходства будет зависеть от наличия/отсутствия тех или иных конкретных наименований в общем списке.Формуляр
Excel 2003 EN, 2013 EN
Сообщение отредактировал Формуляр - Среда, 11.04.2012, 12:04
Цитата, _Boroda_ писал(а): А если название в таблице не встречается, то оно выводится в отдельную таблицу, ему вручную ищется правильное название
А вот тут процедура нечёткого поиска была бы вполне полезна. smile
Зачем? Я выше положил простенький макрос, который вполне меня удовлетворяет. Ведь основная работа была именно при составлении таблицы соответствия, а потом уже раз в месяц добавить десяток новых очепяток - это дело 5-и минут.
Quote (Формуляр)
Цитата, _Boroda_ писал(а): А если название в таблице не встречается, то оно выводится в отдельную таблицу, ему вручную ищется правильное название
А вот тут процедура нечёткого поиска была бы вполне полезна. smile
Зачем? Я выше положил простенький макрос, который вполне меня удовлетворяет. Ведь основная работа была именно при составлении таблицы соответствия, а потом уже раз в месяц добавить десяток новых очепяток - это дело 5-и минут._Boroda_
Как-то, ради интереса, посмотрел - максимум разночтений названия одной организации - 210!!! различных наименований.
Quote (_Boroda_)
Да, забыл сказать, количество - не какие-то 7000 записей, а несколько миллионов.
Известная пословица про беды в России... Кто-то не додумал, не доделал... Была бы у меня шляпа, немедленно бы сняла в почтении! Разгребать мусор, созданный другими - то еще занятие!
Quote (_Boroda_)
Как-то, ради интереса, посмотрел - максимум разночтений названия одной организации - 210!!! различных наименований.
Quote (_Boroda_)
Да, забыл сказать, количество - не какие-то 7000 записей, а несколько миллионов.
Известная пословица про беды в России... Кто-то не додумал, не доделал... Была бы у меня шляпа, немедленно бы сняла в почтении! Разгребать мусор, созданный другими - то еще занятие!lelelik