Добрый день. В прикрепленных файл экселя в котором готовится база компаний по ряду реквизитов.
Вопрос следующий:
В эксель файл внедрено ряд макросов, в том числе два макроса (модуль 6 и 7) для неточного поиска совпадений по именной части названия (столбец С) с выводом результатов в 3 столбика (F - номер строчки с компанией, с именной частью которой есть наибольшее совпадение; G - процентный шанс совпадения именной части названия; H - вывод значения именной части названия компании с которой есть наибольшее совпадение). Что примечательно - оно делает поиск совпадений без учета названия компании из которой оно берет текст для поиска. Как оно работает (вкратце): разбивает искомое название на максимально возможное кол-во комбинаций последовательных символов и ищет максимально возможное кол-во совпадений с комбинациями символов из других названий из списка (столбец С) без учета исходного. Опытным путем было определено (и настроено), чтоб для поиска использовались комбинации по 3 последовательных символа. Результат работы макросов полностью подходит для поставленных задач и (опять таки опытным путем) было определено, что надо обращать внимание на совпадения со значением более 85% (оптимальный процент для определения "вероятного совпадения названия"). Проблема: при "растягивании" формул в столбцах F, G и H на 10 и более строк (при кол-ве названий компаний более 1000 позиций) макросы банально вешаются (поправка: на крутом пк оно выдает просчеты 1 строка /сек, что также есть относительно медленно если надо произвести подобные расчеты для 1000 и более названий компаний). Задача: возможно ли повысить производительность макросов для просчета схожести названий компаний (модуль 6 и 7)?
В прикрепленных файл примера сравнения схожести текста из каждой ячейки с ячейками из того же столбика без учета ячейки, откуда был взят текст для поиска. В соседних трех столбиках получаем номер строчки с ячейкой в которой находится текст с наибольшей схожестью, процентный показатель схожести и собственно "трансляцию" текста из ячейки с наибольшей схожестью. При использовании данных макросов и формул, при работе со списками более 500+ строк, после добавления новой строчки оно уводит Excel в пересчет всех показателей схожести по всем строчкам с загрузкой процессора на 100%. Я понимаю, что это логичное действие от Excel и скорее всего этого избежать не получится, но возможно ли оптимизировать работу макросов и формул без ущерба результату? Или минимизировать время обработки данных макросами? Есть идеи?
Как сделать, чтоб после вставки номера типа "+7 (00822) 123-45-67" через ctrl+v в ячейку оствалось "7008221234567" с автоматическим удалением всех нецифровых символов? В интернете смотрел, на форумах смотрел, на данный момент пользуюсь 2-мя дополнительными ячейками, в одну из которых вставляю номер, а во второй высвечиваются только цифры, которые потом копирую в нужную ячейку. Удобно, но только при небольших кол-вах. Подскажите, можно ли реализовать эту "очистку" сразу во время вставки из буфера? Особенность: некоторые номера начинаются с цифры 0, нужно чтоб в таком случае "0" также оставался (а не исчезал, как при числовом форматировании текста). Буду признателен за ответы, наводки, подсказки.
Пожалуйста, подскажите формулу, через которую в ячейку "А11" можно вывести адреса всех ячеек диапазона "А1:А10" через запятуюв порядке убывания по структуре "Ссылка на ячейку из диапазона А1:А10" "(Значение из ячейки диапазона А1:А10)" "Название из диапазона В1:В10", которые больше (но не равны) "300" ? То есть, в ячейке "А11" должно получится: А8 (600) Ирис, А7 (450) Сгущенка, А10 (450) Сухое молоко, А2 (400) Творог, А9 (330) Концентрат, А1 (324) Молоко.
Как преобразить функцию, чтоб поиск происходил по А1:А10, но без учета ячейки А1 (без ручной правки массива для поиска, чтоб можно было в дальнейшем при увеличении кол-ва строк использовать автозаполнение функции на новые строки)? Предупреждаю: возможности создавать "словарь для поиска" нету, так как необходимо осуществлять поиск именно по введенному тексту из ячейки.
Всем тем, кто рискнул заглянуть в эту тему, после столь громкого названия - доброго Вам времени суток! А тем, кто завидев кол-во текста, не закрыл тему после 5 секунд - добро пожаловать в мой маленький дурдом.
Причина поста: сейчас занимаюсь созданием клиентской базы данных по контактам из каталогов одного предприятия за период 5-7 лет. Каждый год выпускались 3 каталога со списками предприятий по сферам деятельности, которые сопряжены с тематикой предприятия. Столкнулся с проблемой повторов компаний из года в год. Хочу оптимизировать затраты времени и сил.
Поставленная цель готовой базы данных в Excel: список компаний с их реквизитами и контактными данными (разнесенными по соответствующим столбцам) БЕЗ повторов по названию, номерам телефона, мейлу, сайту и другим типовым реквизитам.
Цель поиска помощи здесь: оптимизация процесса внесения данных из каталогов в среду Excel с возможностью отсева повторов в процессе внесения данных про каждую компанию в одну таблицу, а не после соединения нескольких таблиц по каждому каталогу.
Поясняю суть проблемы: каждый выпуск в каталогах (над которыми я сейчас работаю) менялся формат подачи реквизитов предприятий и достаточно большое количество предприятий в разных каталогах по факту повторяются (по предварительной оценке от 30% до 60% в разных годах). Если пойти самым простым (и долгим) путем то сначала нужно сформировать таблицу по каждому каталогу отдельно, а потом вертеться с копированием всех каталогов в одну таблицу с последующим "убиванием" дублей. И если быть ленивым как я, то: нужно настроить работу фильтров, макросов, функций Excel таким образом, чтоб в одну таблицу сразу можно было вводить все данные и Excel посредством сообщений или выделения ячеек цветом "сообщал" о том, что введен "дубль" (хорошо, если даже скажет где он находится), который встречался раннее. НО(!) тут сразу возникает главная проблема поиска решения: так как форма подачи однотипных данных (а иногда и повторяющихся компаний)каждый год отличалась(допустим за 2014 год была компания "ГП ХЗ "Хлебница", а в 2016м году она же указывалась как "Государственное предприятие "Хлебный завод "Хлебница")усложняется возможность вовремя "заметить" дубль(если первое упоминание про эту компанию было в первой тысяче компаний, а второе - в 12й тысяче компаний общего списка)без должной настройки фильтрации, макросов, группировки данных(чакр, парада планет и всего другого). Та же ситуация касается номеров телефонов: в 2014м году они указывались в виде "26533 226 41", а в 2016м - в виде "+37 (26533) 22-641". Внимание! Даже при настройке сокращения нецифровых символов проблема остается: в первом случае получим 2653322641, а во втором - 372653322641, что не "подсветиться" как дубль и не приведет к "возможности" его избежать, так как повторяющийся номер как бы намекает на то, что компания одна и та же.
Итог задачи: нужно чтоб при введении данных в ячейку Excel проверял даже частичное совпадение введенных значений в данную ячейку с данными из того же столбца(-цов? если поиск ведется по столбцам "рабочий номер №1, №2, №3" или "факсовый номер №1, №2, №3"). Самым оптимальным отсев/фильтрация мне кажется по критерию 5-7 повторяющимся подряд символам из данных введенных в конкретную ячейку. Поясняю: В таблице где более 12 тыс компаний в столбец "Название" вносится "ГП ХЗ "Хлебница", а Excel, сразу проверив совпадения по всем вариантам комбинаций (допустим) 6 чередующихся символов из этой ячейки и "просмотрев" весь столбец "Названия", сообщил, что в таблице найдены 3 совпадения трех комбинаций чередующихся символов ("хлебни", "лебниц", "ебница") с ячейкой в которой написано "Государственное предприятие "Хлебный завод "Хлебница". Почему необходимо делать поиск и сравнение "по комбинациям из чередующихся введенных символов из заполненной ячейки"? Идея: максимизация точности поиска дубля на основании "количества совпавших комбинаций чередующихся символов" с одной и той же ячейкой при различии формы подачи данных в однотипных столбцах.
Пояснение. Пример №1: после введения данных в ячейку и автоматической активации фильтрации/поиска дублей ячейки "ГП ХЗ "Хлебница" Excel (например) выдает диалоговое окно с текстом: Найдены дубли по комбинациям с ячейками С ячейкой (ООО "Хлебницкий и Компания") совпадает 2 комбинации из 6 очередных символов ("хлебни", "лебниц"); С ячейкой (Государственное предприятие "Хлебный завод "Хлебница") совпадает 3 комбинации из 6 очередных символов ("хлебни", "лебниц", "ебница"); С ячейкой (ФЛП "Плебницов В.О.") совпадает 1 комбинации из 6 очередных символов ("лебниц") /что в результате дает понимание, что "дубль" = ячейка (Государственное предприятие "Хлебный завод "Хлебница"), так как там наибольшее кол-во повторяющихся комбинаций (3).
Пояснение. Пример №2: после введения данных в ячейку и автоматической активации фильтрации/поиска дублей ячейки "2653322641" (рабочий номер телефона) Excel (например) "подсветит дублем" ячейку из столбика "Рабочий номер №1" ("372653322641"), так как там больше всего повторяющихся комбинаций чередующихся символов: С ячейкой ("372653322641") совпадает 5 комбинации из 6 символов ("265332", "653322", "533226", "332264", "322641"); С ячейкой ("498653322641") совпадает 4 комбинации из 6 символов ("653322", "533226", "332264", "322641"); С ячейкой ("37653322651") совпадает 2 комбинации из 6 символов ("653322", "533226"); С ячейкой ("37653322214") совпадает 1 комбинации из 6 символов ("653322"). /что в результате подтверждает, что ячейка ("372653322641") является дублем, а соответственно вся строчка в базе - повтор введенной компании.
Возможность задать количество очередных символов для фильтрации/поиска есть важной, что позволит обеспечить вариативность требований к фильтрации/поиску в зависимости от типа вводимых/искомых данных.
В прикрепленных - шаблон таблицы с вводимыми данными. На ее основе уже вношу данные про компании из предоставленных каталогов. Сразу скажу - пожалуйста, не предлагайте перейти в другие программы для внесения данных, ведь мы на форуме Excel. К тому же, Excel - универсальная программа для импорта данных в любые другие программы ведения БД, что в моем случае - крайне важно.
Спасибо всем, кто окажет посильную помощь в решении этой непростой задачи, не стесняйтесь - спрашивайте, уточняйте, я расскажу максимум для достижения результата.
P.S. Названия и номера телефонов придуманы во время написания поста для примера и не несут рекламного характера.
На связи.
Изменено: msdoser - 31.08.2017 16:44:26(Доработка текста, так как писал из головы)