非常需要你的帮助。我正在处理一个工作簿,该工作簿在一个工作表中有7000行X 5000列数据。每个数据点都必须在另一个工作表中进行操作和粘贴。操作相对简单,每次操作将少于10行代码(简单的乘法和除法与几个Ifs)。但是,文件偶尔崩溃并获得各种类型的错误。问题是文件大小。为了克服这个问题,我正在尝试一些方法
a)将数据和输出分开在不同的文件中。保持两个文件都打开并按块(通常为200行x 5000列)获取数据块并对其进行操作并将其粘贴到输出文件中。但是,如果两个文件都是打开的,那么我不确定它是否可以解决问题,因为消耗的内存将是相同的,即不是一个文件占用大内存,而是两个文件一起消耗相同的内存。
b)将数据和输出分开放在不同的文件中。通过宏在输出文件中插入链接,访问数据文件中仍然关闭的数据,操作数据并将其粘贴到输出中。这可以通过块来完成。
c)将数据和输出分开放在不同的文件中。运行宏来打开数据文件,并将一大块数据(如200行)加载到内存中并将其关闭。处理数组并打开输出文件并粘贴数组结果。
这三种方法中的哪一种更好?我相信还有其他更有效的方法。请建议。
我不熟悉Access,但我尝试将原始数据导入Access,但它失败了,因为它只允许255列。
有没有办法让文件保持打开状态,但要将其清洗进出内存。然后可以尝试对a和c的轻微变化。 (我担心重复打开和关闭会导致文件崩溃。)
期待您的建议
答案 0 :(得分:1)
如果您不想离开Excel,可以使用的一个技巧是将基本Excel文件保存为二进制文件" .xlsb"。这将清除文件中可能存在的大量潜在垃圾(这完全取决于它最初的来源。)
我只是将大量的webdata缩减了99.5% - 从300MB到1.5MB - 这样做,现在excel中的各种操作就像梦一样。
另一个技巧(来自80年代:))如果你使用大量的单元格公式而不是宏来迭代,那就是:
答案 1 :(得分:0)
我的建议是使用您选择的脚本语言,并使用其中的电子表格分解/组合。
我正在撰写和分解电子表格(在PHP,哦,耻辱),它就像一个魅力。我甚至没有使用任何库。
只需抓住自己的xlutils库来获取Python,就可以轻松搞定。