Vba 我应该把数据分成更小的部分吗?

Vba 我应该把数据分成更小的部分吗?,vba,excel,vlookup,Vba,Excel,Vlookup,我有一个超过1000000行的excel表格,需要执行一些vlookups/countif语句。我应该在一张包含所有数据的工作表上运行我的VB宏,还是在单独的工作表上将数据拆分为50000个增量,然后在每张工作表上运行宏可以节省大量时间?有没有一个方程式可以帮助我做出这个决定 谢谢你的帮助 下面是我计划使用的VB(尽管我更希望找到一个通用的答案,如果有的话,我可以在excel中处理这些大型db提取时使用): 这么大的数据库真的很糟糕,现在我建议将数据库分成几部分,然后应用公式。下面是两件的示例

我有一个超过1000000行的excel表格,需要执行一些vlookups/countif语句。我应该在一张包含所有数据的工作表上运行我的VB宏,还是在单独的工作表上将数据拆分为50000个增量,然后在每张工作表上运行宏可以节省大量时间?有没有一个方程式可以帮助我做出这个决定

谢谢你的帮助

下面是我计划使用的VB(尽管我更希望找到一个通用的答案,如果有的话,我可以在excel中处理这些大型db提取时使用):


这么大的数据库真的很糟糕,现在我建议将数据库分成几部分,然后应用公式。下面是两件的示例

=IF(NOT(ISNA(VLOOKUP(A1,data1,2,FALSE))),VLOOKUP(A1,data1,2,FALSE),IF(ISNA(VLOOKUP(A1,data2,2,FALSE)),"No Match",VLOOKUP(A1,data2,2,FALSE)))

我不太明白
vlookup
countif
与宏有什么关系。但在所有这些单元格中,如果计算设置为“自动”(如果您有该选项),则最好不要有超过一百万个公式。现在,谈到速度比较/最佳实践的问题,我认为这个问题对于SO来说有点离题,更适合SO。话虽如此,我还是继续在任何一个版本上运行宏,并获得内部时间来测量差异:自己测试它。我正在运行的宏包括vlookups'和countif's。我之所以提到这一点,是因为如果my函数只是a=left([field],2),那么即使运行一百万行的时间短到足以拆分数据,也不值得我付出努力。但是,=vlookup可能需要几分钟才能运行。谢谢您的意见。@Ralph一个没有工作代码可供审查的问题与此无关,在锤子敲打它之前,它的寿命是以秒为单位的。@Mat'smugh这篇文章的作者提到了工作代码。我相信他/她离更新上面的帖子,包括他/她写的代码只有一分钟的时间了。如果你的工作代码执行速度很慢,但在其他方面完成了工作,那么,是的,把它提交给评论人。请在发帖前阅读。审阅者会告诉您将数据读入数组并在内存中工作,而不是直接使用工作表,他们还会对代码的每个方面进行注释。
=IF(NOT(ISNA(VLOOKUP(A1,data1,2,FALSE))),VLOOKUP(A1,data1,2,FALSE),IF(ISNA(VLOOKUP(A1,data2,2,FALSE)),"No Match",VLOOKUP(A1,data2,2,FALSE)))