Ап. Есть у кого идеи как все-таки ускорить макросы сравнения?
Оптимизировать работу макросов неточного сравнения
Оптимизировать работу макросов неточного сравнения
Оптимизировать работу макросов неточного сравнения
Оптимизировать работу макросов неточного сравнения
Оптимизировать работу макросов неточного сравнения
Оптимизировать работу макросов неточного сравнения
04.10.2017 14:27:09
Добрый день.
В прикрепленных файл экселя в котором готовится база компаний по ряду реквизитов. Вопрос следующий: В эксель файл внедрено ряд макросов, в том числе два макроса (модуль 6 и 7) для неточного поиска совпадений по именной части названия (столбец С) с выводом результатов в 3 столбика (F - номер строчки с компанией, с именной частью которой есть наибольшее совпадение; G - процентный шанс совпадения именной части названия; H - вывод значения именной части названия компании с которой есть наибольшее совпадение). Что примечательно - оно делает поиск совпадений без учета названия компании из которой оно берет текст для поиска. Как оно работает (вкратце): разбивает искомое название на максимально возможное кол-во комбинаций последовательных символов и ищет максимально возможное кол-во совпадений с комбинациями символов из других названий из списка (столбец С) без учета исходного. Опытным путем было определено (и настроено), чтоб для поиска использовались комбинации по 3 последовательных символа. Результат работы макросов полностью подходит для поставленных задач и (опять таки опытным путем) было определено, что надо обращать внимание на совпадения со значением более 85% (оптимальный процент для определения "вероятного совпадения названия"). Проблема: при "растягивании" формул в столбцах F, G и H на 10 и более строк (при кол-ве названий компаний более 1000 позиций) макросы банально вешаются (поправка: на крутом пк оно выдает просчеты 1 строка /сек, что также есть относительно медленно если надо произвести подобные расчеты для 1000 и более названий компаний). Задача: возможно ли повысить производительность макросов для просчета схожести названий компаний (модуль 6 и 7)?
Изменено: |
|
|
После вставки текста с цифрами/символами в ячейке оставить только цифры
11.09.2017 11:42:49
kuklp,
просмотрел код, попробовал в разных ячейках листа. Помимо диапазона F:M, в некоторых ячейках вставляет ' а в некоторых - нет. Также, при удалении номера из ячейки диапазона F:M эксель оставляет символ ' в ячейке. Как-то можно этого избежать (при удалении номера из ячейки)?
Изменено: |
|
|
После вставки текста с цифрами/символами в ячейке оставить только цифры
После вставки текста с цифрами/символами в ячейке оставить только цифры
После вставки текста с цифрами/символами в ячейке оставить только цифры
После вставки текста с цифрами/символами в ячейке оставить только цифры
После вставки текста с цифрами/символами в ячейке оставить только цифры
После вставки текста с цифрами/символами в ячейке оставить только цифры
После вставки текста с цифрами/символами в ячейке оставить только цифры
Сравнение схожести текста для работы с большими списками, оптимизация макроса
08.09.2017 11:46:09
Андрей VG,
Цель постоянного пересчета: предупредить меня о том, что компания уже есть в списке (при учете того, что она может быть написана чуть по другому) и мне не надо вводить еще 29 уже существующих реквизитов и увеличивать кол-во сущностей в таблице. Скажите, как можно перевести расчет % схожести на кнопку? Возможно это будет как вариант решения проблемы. |
|
|
После вставки текста с цифрами/символами в ячейке оставить только цифры
Сравнение схожести текста для работы с большими списками, оптимизация макроса
08.09.2017 11:14:56
Jack Famous,
Сразу уточняю: списков не 2. В том и проблема, что нету "словаря" для сравнения. Текстовое значение для сравнения находится в том же диапазоне где проводится поиск/Сравнение. Если дублировать столбик с названиями и превратить его в "словарь", то по результату работы двух предложенных решений из этих топиков станет 100% совпадение со своим клоном из списка-словаря. Цель достигнута не будет. |
|
|
Сравнение схожести текста для работы с большими списками, оптимизация макроса
После вставки текста с цифрами/символами в ячейке оставить только цифры
После вставки текста с цифрами/символами в ячейке оставить только цифры
Как сразу найти все адреса эл.почты содержащие определенные домейны
06.09.2017 16:42:07
vadim801,
Не знаю, насколько это решение будет "изящно", но оно работает и суть следующая: Есть список мейлов клиентов в столбике "А". В стобике "В" есть "черный список" доменов, на мейлы которых отправлять запрещено. На примере строчки 2 из прикрепленного файла через формулу
оно в столбике "С" "проверяет мейл на валидность" с "черным списком" доменов из столбика "В" и если оно проходит проверку - добавляет мейл в ячейку столбика "С". Если оно находит домен выбранного мейла в "черном списке" из столбика "В", то вместо мейла оно просто оставляет ячейку пустой (полностью пустой, даже без пробела). На этом можно закончить, но(!) если нужно сделать рассылку на все "валидные" адреса, которые прошли проверку на домен, то действуем дальше: 1) вставляем макрос
2) Для рассылки нам нужна одна строчка со всеми собранными адресами из столбика "С" через запятую без учета пустых ячеек. Для этого (на примере файла из прикрепленных) в ячейке "D1" пишем формулу (работает только при вышеуказанном макросе):
Где - первые C$2:C$1048576 - диапазон для поиска условия без ячейки с заглавием столбика; - "<>0" - условие "непустых" ячеек; - вторые C$2:C$1048576 - диапазон, для выборки значений для сцепки без ячейки с заглавием столбика; - ", " - разделитель между сцепленными значениями (не забывайте, что для списка мейлов для рассылки, чтоб потом его можно было просто вставить в графу "получатель" в Вашем почтовом ящике нужно указывать разделитель ", " с пробелом); - 1 - критерий, определяющий "сцепку" только для уникальных значений, то есть в данном случае один и тот же мейл в ячейке-сцепке дважды не повторится. В результате, в ячейке "D1" мы получили список рассылки через запятую по мейлам, которые прошли проверку на "черный список" доменов (по которым отправлять запрещено). Всем спасибо. Надеюсь осилили и оно будет Вам полезно.
Изменено: |
|||||||
|
Динамический отсев вводимых значений с учетом возможного частичного совпадения с раннее внесенными данными, Оптимизация работы с БД
05.09.2017 16:54:46
Решение, которое я так долго искал:
Человек на форуме предоставил эксель в котором есть 2 макроса, которые выполняют именно то что нужно, да еще и вычитают сам источник поиска из анализируемого диапазона. Единственное "но": макрос сравнения схожести при большом кол-ве строк начинает чуть "проседать" в быстродействии. Кому интересна тема "неточного поиска" и методы его реализации: поищите посты и видео Игоря Бокалова и, в том числе, обратите внимание на программу keycollector (это конечно не эксель, но программа крайне продуктивно работает с фильтрацией и отсевом "неточных дублей" в пределах одного и того же списка). Прошу не воспринимать как рекламу, эти материалы действительно были полезны в планировании дальнейшей работы над моей БД. Спасибо форуму, администрации и всем, кто отвечал в этой теме. Тему сохраняю себе на комп. Надеюсь кому-то также будет полезна. |
|
|
Формула вывода адресов ячеек, которые соответствуют критерию, формула =ячейка
Формула вывода адресов ячеек, которые соответствуют критерию, формула =ячейка
Формула вывода адресов ячеек, которые соответствуют критерию, формула =ячейка
05.09.2017 11:29:23
Sanja, а если меняется диапазон с названиями? В макросе нужно будет менять? или достаточно скорректировать вводимую формулу?
Еще вопрос: если в другой таблице будет использован этот же макрос, но там значения указаны в "%", как сделать отображение в конечной ячейке в скобках в "%"?
Изменено: |
|
|
Формула вывода адресов ячеек, которые соответствуют критерию, формула =ячейка
Формула вывода адресов ячеек, которые соответствуют критерию, формула =ячейка
05.09.2017 10:04:16
Есть табличка
То есть, в ячейке "А11" должно получится: А8 (600) Ирис, А7 (450) Сгущенка, А10 (450) Сухое молоко, А2 (400) Творог, А9 (330) Концентрат, А1 (324) Молоко. Буду благодарен за любую информацию.
Изменено: |
|||||||||||||||||||||||||||||||||||||
|
Как сразу найти все адреса эл.почты содержащие определенные домейны
04.09.2017 16:18:44
vadim801, ее нету в этом случае.
Эта формула берет ячейку из столбца "А", берет все символы справа налево до символа "@", куда попадает домен почты, и ищет по всему столбцу "А" совпадения (без учета самой ячейки откуда был взять пример для поиска), после чего 2 варианта: 1) найдено минимум одно совпадение в столбце "А" => оно выдает сообщение "Есть домен"; 2) оно не находит повторов по домену в столбце "А" => выдает сообщение "Нету домена". Фактически, оно в реальном времени проверяет наличие повтора домена почты без наличия словаря. Вопрос может быть в другом: насколько тебе важно иметь отдельный столбик с доменами? У меня подозрения что они вбиваются руками, как следствие - могут быть ошибки. Если этот отдельный столбец с доменами нужен, то там также можно настроить автоматическое "вытягивание" домена, допустим, в ячейку "С1" после ввода мейла в ячейку "А1" и так по каждой строчке.
Изменено: |
|
|
Как сразу найти все адреса эл.почты содержащие определенные домейны
Динамический отсев вводимых значений с учетом возможного частичного совпадения с раннее внесенными данными, Оптимизация работы с БД