我有一个大型Excel文件,其中包含多个带有普通数据的数据表和一些带有各种图表的仪表板和基于这些数据的kpi。 我希望使文件更小,更快。我应该将未格式化的数据转换为表格。我无法找到任何支持这一点的东西。
有人有任何想法吗?
答案 0 :(得分:0)
表有许多好处,但它们通常比普通数据慢(尽管最新版本的Excel 2016具有显着的表速度改进)。
答案 1 :(得分:0)
你实际上是在问错误的问题。您应该问的问题是"为什么Excel需要这么长时间来重新计算,为什么我的文件大小如此之大,我该怎么办?"
而且你没有给我们很多关于你症状的信息。你的MB文件有多大?它中有多少行数据?大范围的大量查找?很多不稳定的函数,如OFFSET,INDIRECT在长依赖链的头部?它有多慢?你有什么版本/ SKU的Excel?
如果Excel运行缓慢,通常是因为人们无意中将其编程为慢速运行,原因是配方选择不当和布局欠佳。转换到表格与否,并不会因为事物的声音而产生很大的不同。
导致文件速度缓慢的常见罪魁祸首包括以下内容(请注意最后一个表格):
多列上的低效查找(例如使用多个列 VLOOKUPS为同一记录带来数据而不是使用 一个MATCH和多个INDEX函数)
查找非常非常长的数组。看我的帖子 http://dailydoseofexcel.com/archives/2015/04/23/how-much-faster-is-the-double-vlookup-trick/ 了解如何对查找表进行排序并使用二进制匹配 参数可以加速查找数千倍。
过度使用资源密集型公式,例如SUMPRODUCT,何时 存在更简单的替代方案(包括SUMIF及其变体,甚至更好的数据透视表)
使用IF和其他功能更改数千个单元格的格式,而不是使用自定义数字格式
使用数据表。 (这些可能真的会占用资源,有时也会 存在更好的替代方案)
使用数千个额外的公式来引用数据输入单元格 可能不会使用,而不是使用Excel表(又名 ListObjects)自动动态扩展。我总是使用表来托管我的数据和设置。它们从根本上简化了引用(包括VBA)和文件可维护性。
您需要解决根本原因,而不是症状。一个好的起点是这篇重新计算的大师查尔斯威廉姆斯(我看到的已经过去了)的文章:
就文件大小而言,正如Charles Williams所说:为了节省内存并减小文件大小,Excel尝试仅在所使用的工作表上存储有关该区域的信息。这称为使用范围。有时,各种编辑和格式化操作会大大超出您目前考虑使用的范围。这可能会导致性能障碍和文件大小障碍。
您可以按Ctrl + End查看Excel认为的使用范围。如果您发现自己位于数据结束位置的下方或右侧,则删除该点与数据边缘之间的所有行/列:
(请注意,您必须使用右键单击DELETE选项,而不只是按下键盘上的Delete键。)
完成此操作后,再次按Ctrl + End查看最终结果 - 希望靠近数据的右下角。有时它不起作用,在这种情况下你需要按Alt + F11(打开VBA编辑器)并在立即窗口中键入Application.ActiveSheet.UsedRange然后按ENTER键(如果你看不到一个窗口,标题“立即”然后按Ctrl G)。
最后,根据您拥有的Excel版本和SKU,您可以使用PowerPivot和PowerQuery从根本上简化操作,并大幅减少工作簿中的公式数量。