好的 - 已多次询问此问题,但再次询问最佳解决方案:
我有两个excel文件(不是表) . 第一张excel表非常庞大,有近200,000条记录 . 其中一个列(性别)已损坏,我必须修复它 .
我有第二个excel文件,它只有大约200条记录 - 这些记录对于那些搞砸了的记录具有正确的值 .
例如:
这是具有正确值的文件,只有大约200条记录(只有损坏的记录) .
现在我需要一个宏,我需要在200,000条记录中找到这200条记录(按员工ID),并用正确的值替换Gender值 .
我找到了类似的东西here . 但我不想200次循环200,000条记录 . 感觉就像性能开销 . 有更好的选择吗?
我在想一个理想的解决方案
-
循环200个项目并使用每个循环的员工ID
-
获取该员工ID并在主Excel的Employee id列中执行"Find"操作
-
如果找到,请替换“性别”列值
还有其他更好的解决方案吗?任何意见都很高兴
3 回答
通过VBA执行此操作的一种方法是循环执行200次更正,将ID与MATCH函数进行比较以找到它所属的行,而不是第二次循环(第二次循环到20000会花费很长时间,就像你说的那样) .
对于下面的sub我已经将200表复制并粘贴到20000表的第5:7列中,您可以很容易地自动化这个部分,或者只是为代码的每个部分输入正确的工作表引用 .
我还放入了一个检查行,以确保小表中的当前ID匹配,否则会引发错误 . 您可以在此错误捕获中将ELSE放在END IF之前,以突出显示实际未找到的任何ID . 这是代码,希望这个方法有帮助!
以超快的方式,复制您的CORRECT员工ID列表并粘贴到CORRUPT员工ID列表下方...突出显示重复项并更正突出显示的内容 .
否则VLOOKUP可以标记哪些是腐败的?基本上从正确的列表中获取一个唯一的字段,并将其与您的损坏列表进行比较,然后修复~200错误 .
我假设员工ID是一个唯一的记录,因此您可以在正确的记录下粘贴正确的记录,按empID排序并突出显示重复记录以便轻松找到它们 .