在启用宏的工作簿中处理大量数据[Excel / Other]

时间:2016-05-11 10:23:05

标签: excel performance vba excel-vba

我有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更快地处理数据,还是编写可能的数据?

1 个答案:

答案 0 :(得分:1)

一些想法。

1)如果主要罪魁祸首是更新链接,那么在打开时停止更新

Workbooks.Open fullFileName, UpdateLinks:=False

2)我怀疑复制所有内容然后删除你不需要的东西是耗时的 - 这真的有必要吗? 您是否可以尝试循环访问数据并确定相关内容并将其复制? 我想这可能取决于你是如何进行搜索的,但是如果你正在进行并测试每一行(不确定你是否需要这样做)那么你可以确定符合标准的第一行并继续直到你击中不符合标准的行。然后从第一个开始复制并粘贴行(或其部分),最后一个符合您的条件。完成此操作后,继续循环浏览数据。 您甚至可以收集工作表中的所有范围(例如,使用Union语句),最后在到达工作表末尾时将它们全部复制到一个语句中。

不确定这是否是您要找的。了解您的数据以及您拥有的标准类型可能会有所帮助。

编辑1:是,将覆盖链接的更新。您是否尝试将计算模式设置为手动并确保屏幕更新设置为false?这些可能会显着减慢你的速度。