0

我工作一个巨大的 excel 工作表(大约 40,000 行,几十列),其中每个单元格镜像引用另一个工作表中的相同单元格(别介意奇怪的架构,来自导出这个 excel 庞然大物的软件的限制,我必须采取这是理所当然的)仅在此工作表中就有大约 150,000 个单元格引用。我想知道引用其他表格单元格的最快速有效的方法是什么:

  • 经典的excel方法:使用类似的东西:=value(datasheetname!c2)
  • 使用相对较新的表格单元格引用,例如:=table_name[@c_rowname_or_number]

为了使这个巨大的工作表响应,我已经需要禁用自动计算,所以每一个小的性能改进对我来说都是很好的。

谢谢您的帮助!

4

2 回答 2

1

首先,我不确定您是否正在寻找正确的问题 - Excel 简单链接单元格的性能非常高 - 在我的示例工作簿中,我链接了 5M 单元格,运行计算只需要 0.4"。通常, 即使是VLOOKUP大型数据集上的一些公式也会比任何数量的链接单元格产生更大的性能影响。查看此答案以了解如何在此处提高速度。

为了回答您的问题,我刚刚在具有 5M 单元的工作簿上运行了一些计时器。

如果我通过一个简单的引用 ( =Sheet1!A2) 链接它们,我得到以下结果:
10x Application.CalculcateFullRebuild: 47"
10x Application.CalculateFull: 3,7"

使用表格通知 ( =Table1[@Column1]) 我得到了以下结果:
10x Application.CalculcateFullRebuild: 193" (4.1x)
10x Application.CalculateFull: 5,7" (1.54x)

因此,在这两种情况下,表格通知都会明显变慢。在您的情况下,这.CalculateFull可能更适用,因为 Excel 仅在加载文件或更新时构建计算树 - 否则只会重新计算。

于 2013-02-20T08:30:18.073 回答
1

我发现如果动态命名的引用(使用 OFFSET)非常大,它们会产生重大影响。我会说,如果您的工作表中有任何这些并且它们不一定必须存在(设置列数等),那么您应该将它们更改为静态引用。

于 2013-02-20T15:01:30.427 回答