我正在构建一个相当复杂的工作簿,看起来需要将一些工作表复制 10-20 次 - 目前每次复制操作大约需要 45 秒(大约 20 张工作表)。这似乎不合理,所以我试图找出罪魁祸首。到目前为止,我已经:
- 复制前禁用宏和插件 --> 无效果
- 删除所有命名区域(工作簿包含很多这样的区域,每个工作表也包含相当多的区域,其中很多都是动态的,使用 OFFSET(A1,,HEIGHT,WIDTH) 方法)——>无效果
- 复制前删除了除几张纸以外的所有纸 --> 没有效果
- 确保没有公式涉及非常远的范围 --> 没有效果
在每种情况下,我都会设置条件,关闭工作簿并在尝试复制之前重新打开它,我还应该提到计算已被禁用(无论如何,尽管有大量易变公式,但计算时间仍不超过 5 秒左右,这不应该导致 45 秒的复制时间)。Excel 有足够的可用内存,所以这不应该是问题,而且我在一台装有 SSD 的机器上测试了相同的结果,这意味着这不是交换问题。还有其他想法吗?
答案1
找到最后一行,向下选择(Shift-向下)并删除行。列也一样。可能是有人对 1M 行应用了格式。
答案2
我遇到了一个非常相似的问题,即我用一张空白表作为模板,并使用不同的参数复制几次,以便能够比较不同的场景。
在某些时候,手动或通过 DBA 复制工作表会变得非常慢,但没有真正的原因 - 模板不包含许多公式甚至数据。
然而,在探索名称管理器时,我发现该工作表有一个 Print_Area 名称,我删除了它只是为了清理,并没有想到它会有所帮助。但确实如此;删除后,复制几乎立即完成。
答案3
一种可能性是,条件格式被重复应用,并且由于所有这些条件都需要进行格式化处理,因此任何操作都会变慢。
解决方案:删除工作表中的所有条件格式(或那些你不需要的)。如果你的工作表中有数百个多余的条件格式,可以使用 VBA 代码自动执行此操作 - 只需在 Google 中搜索“vba 删除条件格式”