4

我有一个链接到 Oracle 数据库查询的 Excel 数据表。此数据表同时具有:(1) 添加到数据表中的附加计算列(一些涉及数组公式和 MATCHes)(基于查询的值),以及 (2) 许多相关公式分布在其他选项卡中

如果将查询本身按原样添加到全新的 Excel 文件中,则刷新速度很快,但即使将计算设置为手动,相关公式似乎也会减慢刷新速度。

我尝试了几件事:1)将计算设置为手动 2)禁用屏幕更新 3)禁用事件 4)从数据表中删除计算列(只是普通公式)

似乎没有任何帮助......有什么想法吗?谢谢。

4

1 回答 1

2

您可能会对此链接感兴趣。

Excel Recalculation http://msdn.microsoft.com/en-us/library/office/bb687891(v=office.12).aspx

Thread Safe Functions http://msdn.microsoft.com/en-us/library/office/bb687899(v=office.12).aspx#xl2007xllsdk_threadsafe

有许多事件可以触发重新计算事件,也可以读取VOLATILE函数。Volatile 函数是这样一个函数,即使它的参数(如果有的话)都没有改变,也不能假定它的值从一个时刻到下一个时刻都是相同的。

The following Excel functions are volatile.
NOW
TODAY
RAND
OFFSET
INDIRECT
INFO (depending on its arguments)
CELL (depending on its arguments)

数据表的重新计算处理略有不同。重新计算与常规工作簿重新计算异步处理,因此大型表的重新计算时间可能比工作簿的其余部分要长。

尝试设置Automatic Except for Data Tables。也许即使设置为手动计算,这也意味着只要事件触发手动计算,它就会计算受影响的单元格。也许您的刷新正在触发所有这些事件,这些事件将计算多次,因为随着事件的触发,更多的事件会进入并再次触发。

您可以做的最简单的事情是尽可能多地消除VOLATILE公式ARRAY。个人经验告诉我,RAND 和 ARRAY 函数是最差的。

于 2013-07-30T14:13:20.627 回答