只会用F9,不知道ALT+CTRL+SHIFT+F9这个办法,请问czzqb老师这个办法起什么作用? EXCEL的计算是很“聪明”的。 我们在创建excel文件和写入公式的时候,它就首先在内存中建立一个计算用的“关系链”或者叫“关系树。一个公式以及与它有关联的所有其他公式、名称、单元格一起,构成一个“关系链”。excel随时“监视”这个关系链,一旦发现你动了这个链条上的某个地方,它就把整个关系链重算一遍。而和这个链条无关那部分,它就不会去计算。 但有几个东西例外: 1,宏表函数。估计MS创建“关系链”概念的时候,宏表函数已经处在被淘汰的边缘,所以他们就没把宏表函数纳入关系链中。(我们现在所使用的宏表函数GET.CELL之类其实是化石级的,呵呵)因为这个原因我们在定义宏表函数的名称时,往往要在后面加上一个易失函数,如+0*RAND()或&T(NOW())之类,目的是把不会重算的宏表函数变成包含易失函数的公式,从而自动重算(参见下面的第二点)。 2,易失函数(其实翻译成“非稳定函数”或“非稳函数”可能更贴切些)。不管包含易失函数的公式是不是在关系链上,整个工作薄中只要改动了一个数据,那么所有包含易失函数的公式及其关系链(注意,它“连累”了整个关系链)都要全部重算。——实际上,易失函数的重算范围更广的多:所有在同一个进程中打开的所有工作簿的所有包含易失函数的公式及其所在关系链都要全部重算! 3,高版本打开低版本excel工作簿时,全部自动重算。这种重算包括建立关系链和对关系链上的数据全部重算。 4,如果一个关系链上的单元格超过65536个,那么只要有重算的机会(其他任何一个关系链在重算),它就会把这个“超长链”重算一遍。——这点可不好,越难算的就越要多算几遍! 好了。明白了关系链的概念,就可以区分F9和CTRL+ALT+SHIFT+F9二者的区别了: F9是不进行重建关系链的重算,而且只是本工作表的重算。 有时为了重建关系链,并把那些不在关系链里的公式也计算一遍,就要进行“强制全部重算”,这就要按下四键。 比如对宏表函数,由于它不在关系链上,所以它的重算就不能只按F9,而必须是四键。对于较低版本(我忘了是哪个版本),可以是三键,即ctrl+alt+F9,而对于高版本,则是四键。由于低版本也可以是四键,所以我就干脆全写成四键了。 我们在写宏表函数的名称公式时,常常加上+0*RAND()这段公式,目的就是把不会重算的宏表函数公式变成时时刻刻重算的易失函数公式。 除了以上说的之外,还有几个功能操作也会引发全部重算,比如筛选、插入行、插入列,而不管这种操作是否改变了关系链。这叫做“易失性操作”。 这样,我们就知道: 一,当选择“自动计算”时,只要我们每输入或改动一个单元格数据,EXCEL就进行如下的一次计算:本进程所有工作簿中含有易失函数公式所在的关系链全部重算 ;被改动单元格所在的关系链上,所有公式、名称全部重算;超长关系链重算 而其他不符合以上几条的,不会重算。由于使用了“关系链”(或关系树)EXCEL大大减小了每次计算的量。 二,当按下F9键时,EXCEL会计算以下内容:本进程所有工作簿中含有易失函数公式所在的关系链全部重算 ;本工作表所有数据关系链涉及的公式全部重算;超长关系链重算。 三,当按下Alt+Ctrl+Shift+F9键时,EXCEL进行以下计算:本进程所有工作簿中含有易失函数公式所在的关系链全部重算 ;重建本工作表所有关系链,并全部进行重算;本工作表其余不在关系链上的“孤立”公式 |
还应该注意的是:对于外部链接如果不打开链接工作簿的话,除了打开文件时的更新之外,以上的三种操作都不会重算(即不引发自动更新)(在2003版,隐藏行和取消隐藏行也是易失性操作,但隐藏列和取消隐藏列却不是易失性操作,这和SUBTOTAL函数2003版的新增特性有关。较低版本这个操作就不是易失性操作) 但是楼主的这个文件有点怪。我没看出公式有什么特殊的地方,但它也不会重算。我不知道为什么。我加上易失函数,就是强迫它重算。按下四键也是强迫重算。
[此贴子已经被作者于2008-2-25 18:32:20编辑过] |