【发布时间】:2016-05-11 10:23:04
【问题描述】:
我有 15 个左右的工作簿,其中包含大量数据(2000 行,我想使用的工作表中的 ~120000 个活动单元格),我正在尝试创建一个基本上可以输入条件的搜索引擎,然后excel 或其他东西返回满足该条件的任何行。
我有这样的工作
伪代码
Map drive (files are stored on sharepoint)
Loop workbookdata1 to workbookdata15
Copy data from sheet to new sheet in workbookMAIN
Loop through columns, keeping only relevant columns, deleting the rest
Loop through rows, deleting row if first cell = blank or "xxx"
Next workbookdata
Compile all of the data from the newly generated sheet
Make it look nice and readable
这可行,但运行需要 45 分钟 - 小时,因为它打开的每张工作表都会更新链接(所有 2000 行),然后必须过滤掉所有不需要的数据。
我有哪些加快速度的选择?我可以使用 Access 或 MATLAB 更快地处理数据,或者编写一些可以处理的代码吗?
【问题讨论】:
-
我不知道 Access 或 MATBLAB 是否更快,我认为 Access 应该是。无论如何,这也应该用 Excel 来实现。但是有很多东西要看。首先以默认方式打开工作簿很慢。 ADO 或 ExecuteExcel4Macro (stackoverflow.com/questions/25287549/…) 会更快。复制数据也可以非常慢或非常快地完成。但是您必须发布正确的代码才能获得更多帮助。
-
如果您的工作代码只需要改进,那么您可能在这篇文章的错误位置。 Code Review 是他们处理现有/工作代码的地方,并在速度、安全性、可持续性和寿命方面尽最大努力改进它。试试看。他们很好!
-
如果您在处理数据时经常引用工作表,这将非常慢。通过使用 VBA 数组、集合和可能的用户定义的对象在将数据写入工作表之前收集数据,您可以预期显着(十倍?)速度提高。根据您的数据量,您可能必须分阶段执行此操作,但这仍然可以显着提高速度。
-
我以前从未听说过使用 ADO 或 ExcuteExcel4Macro,我会研究一下。有机会我会发布代码,我将不得不更改其中的一些名称。
-
当我提到代码时,它只是 VBA,Code Review 看起来很方便,但它是用于实际编程而不是像 VBA 这样的脚本吗?
标签: performance vba excel