Многопоточность в VBA с использованием этого инструмента - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь использовать нечеткий поиск, чтобы сопоставить список правильных имен с набором «грязных» имен.Но, очевидно, vba использует только одно ядро ​​моих процессоров, и это занимает слишком много времени, потому что я использую его как минимум на 5000 имен.

Вот ссылка на нечеткий код: https://www.mrexcel.com/forum/excel-questions/195635-fuzzy-matching-new-version-plus-explanation.html#post955137

Я также исследовал «многопоточные» решения для VBA и обнаружил, что нет никакого собственного способа сделать это, но кто-то нашел, что сделалальтернатива с использованием некоторых сценариев.

Вот ссылка на инструмент многопоточного сценария vba: https://analystcave.com/excel-vba-multithreading-tool/

Теперь все, что мне нужно сделать, - это интегрировать код поиска в этот сценарий многопоточности, чтобыэто ускорит обработку этой функции.Я предполагаю, что это возможно, верно?

Может кто-нибудь помочь мне с этим?Я узнал VBA только через поиск в Google и чтение других кодов, но этот многопоточный инструмент vba довольно сложен для начинающего, как я.

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Ниже приведен отрывок с сайта Microsoft.Я считаю, что их надстройка на основе C # Fuzzy Lookup для MS-Excel основана на многопоточности и намного быстрее, чем код, который вы предоставляете.Зачем изобретать велосипед, когда у нас есть лучший вариант.

Надстройка Fuzzy Lookup для Excel была разработана Microsoft Research и выполняет нечеткое сопоставление текстовых данных в Microsoft Excel.Его можно использовать для идентификации нечетких дублирующихся строк в одной таблице или для нечеткого соединения похожих строк между двумя разными таблицами.Соответствие устойчиво к широкому кругу ошибок, включая орфографические ошибки, сокращения, синонимы и добавленные / отсутствующие данные.Например, он может обнаружить, что строки «Mr.Эндрю Хилл »,« Хилл, Эндрю Р. »и« Энди Хилл »относятся к одному и тому же базовому объекту, возвращая оценку сходства вместе с каждым совпадением.Хотя конфигурация по умолчанию работает хорошо для широкого спектра текстовых данных, таких как названия продуктов или адреса клиентов, соответствие также может быть настроено для конкретных доменов или языков.Следующие библиотеки необходимы и будут установлены при необходимости: .NET 4.5 VSTO 4.0

0 голосов
/ 25 мая 2018

Я не квалифицирован для решения многопоточности, но по поводу вашей скорости: вы запускаете код непосредственно в электронной таблице?

Лучший способ - импортировать всю таблицу или диапазон в массив и запускать там код, находящийся в памяти компьютера.Там он работает НАМНОГО быстрее.Затем вставьте результаты в электронную таблицу.

Вот некоторая информация о переносе данных в массив:

Создание массива из диапазона в VBA

http://www.cpearson.com/excel/ArraysAndRanges.aspx

Вам придется возиться с остальным кодом, но в основном вы будете обращаться с массивом, как с таблицей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...