处理巨大的Excel文件

时间:2014-02-02 07:07:06

标签: excel-vba-mac

非常需要你的帮助。我正在处理一个工作簿,该工作簿在一个工作表中有7000行X 5000列数据。每个数据点都必须在另一个工作表中进行操作和粘贴。操作相对简单,每次操作将少于10行代码(简单的乘法和除法与几个Ifs)。但是,文件偶尔崩溃并获得各种类型的错误。问题是文件大小。为了克服这个问题,我正在尝试一些方法

a)将数据和输出分开在不同的文件中。保持两个文件都打开并按块(通常为200行x 5000列)获取数据块并对其进行操作并将其粘贴到输出文件中。但是,如果两个文件都是打开的,那么我不确定它是否可以解决问题,因为消耗的内存将是相同的,即不是一个文件占用大内存,而是两个文件一起消耗相同的内存。

b)将数据和输出分开放在不同的文件中。通过宏在输出文件中插入链接,访问数据文件中仍然关闭的数据,操作数据并将其粘贴到输出中。这可以通过块来完成。

c)将数据和输出分开放在不同的文件中。运行宏来打开数据文件,并将一大块数据(如200行)加载到内存中并将其关闭。处理数组并打开输出文件并粘贴数组结果。

这三种方法中的哪一种更好?我相信还有其他更有效的方法。请建议。

我不熟悉Access,但我尝试将原始数据导入Access,但它失败了,因为它只允许255列。

有没有办法让文件保持打开状态,但要将其清洗进出内存。然后可以尝试对a和c的轻微变化。 (我担心重复打开和关闭会导致文件崩溃。)

期待您的建议

2 个答案:

答案 0 :(得分:1)

如果您不想离开Excel,可以使用的一个技巧是将基本Excel文件保存为二进制文件" .xlsb"。这将清除文件中可能存在的大量潜在垃圾(这完全取决于它最初的来源。)

我只是将大量的webdata缩减了99.5% - 从300MB到1.5MB - 这样做,现在excel中的各种操作就像梦一样。

另一个技巧(来自80年代:))如果你使用大量的单元格公式而不是宏来迭代,那就是:

  1. 关闭计算。
  2. 复制公式
  3. 开启计算,或只是手动运行
  4. 复制并粘贴特殊值公式输出。

答案 1 :(得分:0)

我的建议是使用您选择的脚本语言,并使用其中的电子表格分解/组合。

我正在撰写和分解电子表格(在PHP,哦,耻辱),它就像一个魅力。我甚至没有使用任何库。

只需抓住自己的xlutils库来获取Python,就可以轻松搞定。