我在 Windows 7、Core i5 2.53GHz(2 核、4 线程)和 4GB DDR3 @ 533MHz RAM 上使用 Excel 2007。
我需要从一个巨大的数据库中提取和组织数据,为了实现它,我有一个工作表,其中我:
- a. 将部分原始数据粘贴到 6 列 x 36,600 行中
b. 从 a) 中提取我感兴趣的数据,然后使用 8 列 x 36,600 行对其进行处理
然后,我复制 1.b) 中 6 列公式的结果并将它们粘贴到第二个工作表中,在那里我将编译我需要的所有数据并进行分析。
a. 对于每组 6 列 x 36,600 行的数据,我需要添加 5 列公式(大部分是小幅添加,每项添加的值不超过 2 个,还有一些 INDEX-MATCH);
b. 总数据量最终将达到 130 组,因此:780 列数据加上 650 列公式 x 36,600 行。c
. 编译并分析完所有数据后,我会将其全部转换为值 - 稍后我会将其与 LOOKUP/INDEX-MATCH 公式一起使用。d
. 两个工作表都没有自动格式化功能,都具有最低限度的格式化功能(彩色单元格以标识哪些单元格有公式),如果我单击 CTRL + END,它会直接转到正在使用的范围的末尾。
所以,我的问题是,到目前为止,我已经建立了公式结构,我将一点一点地向其中添加数据,但文件有 166MB,正在耗尽我所有的处理器资源。我已将计算设置为手动,但打开、关闭或保存此文件仍需要长达 5 分钟的时间。
问题:
- 对于 166MB 的文件来说,这种速度是否是可以预料到的?
- 如果我将数据编译为 65 列数据加上 78 列带公式的数据 x 367,000 行,效果会更好吗?
- 我正在购买一台新笔记本电脑,更好的处理器是否可以克服这些困难?(我正在考虑使用具有 16GB RAM 的 QuadCore i7)
关于问题 3 的说明:我不需要硬件推荐,因为我正在购买上面描述的机器。我想知道在处理这个文件时是否可以期望性能得到改善。
答案1
Excel 极其占用内存,处理大型数组时效率低下。使用 SSD 或 RAM 驱动器无济于事,因为大多数数据将驻留在内存中,而不是硬盘中。在任务管理器中跟踪内存使用情况,并尝试将 Excel 中的 RAM 使用量保持在 2GB 以下。将数据分成较小的文件,并使用整理或汇总工作表根据需要调用数据,而不是一次打开所有内容。通常,55MB 的文件可能占用 Excel 中的 1GB 内存,并且根据公式结构需要 2-3 分钟才能打开,因此 5 分钟打开 166MB 并不意外。
保存为二进制文件,这样可以提高加载和保存大文件的速度。尽可能使用最快的 CPU 和内存。要测试您的 excel 文件是否可扩展到 CPU 内核,请仅使用 1 个 CPU 内核在 VBA 中使用计时器运行计算,然后使用 2 个内核重新运行。如果加速接近 100%,那么更多内核也会有所帮助。使用台式机而不是笔记本电脑。
答案2
这只是为了解决我提出的问题以及评论中未回答的问题
2)是的,列数越少,行数越多,效率越高。
3) 新笔记本电脑很有帮助。虽然打开和计算工作表仍然需要一些时间,但比以前快得多(等待时间减少了四分之一或更少)。