我试图使用模糊查找来匹配正确名称列表和一组"脏"名。但显然vba只使用我的处理器的一个核心而且需要花费太多时间,因为我在至少5000个名字上使用它。
我还研究过"多线程" VBA和我的解决方案发现,没有本地方法可以做到这一点,但有人找到了使用某些脚本的替代方案。
这是多线程vba脚本工具的链接:https://analystcave.com/excel-vba-multithreading-tool/
现在,我需要做的就是将查找代码集成到这个多线程脚本中,以便加速这个函数的处理。我假设这是可能的吗?
有人可以帮我吗?我只是通过谷歌搜索和阅读其他代码来学习VBA,但对于像我这样的初学者来说,这个vba多线程工具非常复杂。
非常感谢!
答案 0 :(得分:0)
我没有资格解决多线程问题,但关于速度问题:您是否直接在电子表格上运行代码?
更好的方法是将整个表或范围导入到数组中,并在计算机内存中运行代码。它在那里运行得更快。然后将结果粘贴到电子表格中。
以下是将数据拉入数组的一些信息:
Creating an Array from a Range in VBA
http://www.cpearson.com/excel/ArraysAndRanges.aspx
你必须摆弄其余的代码,但基本上你会把数组视为表格。
答案 1 :(得分:0)
以下是Microsoft网站的摘录。我相信他们基于C#的加载项Fuzzy Lookup for MS-Excel是基于多线程的,并且比您提供的代码快得多。当我们有更好的选择时,为什么要重新发明轮子。
Excel的模糊查找加载项由Microsoft Research开发,并在Microsoft Excel中执行文本数据的模糊匹配。它可用于识别单个表中的模糊重复行,或模糊连接两个不同表之间的类似行。匹配对各种错误都很稳健,包括拼写错误,缩写,同义词和添加/缺失数据。例如,它可能会检测到行“先生Andrew Hill“,”Hill,Andrew R.“和”Andy Hill“都指的是相同的底层实体,每次匹配都会返回相似度得分。虽然默认配置适用于各种文本数据,例如产品名称或客户地址,但也可以针对特定域或语言自定义匹配。需要以下库,并在必要时安装: .NET 4.5 VSTO 4.0