当公式直接或间接引用存储该公式的单元格时,就会发生循环引用。例如,如果B3包含公式= B2 + B3,则B3包含循环引用。

通常,循环引用表示公式中的错误。但是,在某些情况下需要使用循环引用。

Excel允许您在工作表中包括循环引用,但是对它们可能有些挑剔。

在大多数情况下,如果启用了“迭代”控件,则Excel对循环引用非常宽容。 (从“工具”菜单中选择“选项”,然后显示“计算”选项卡。)如果选中“迭代”复选框,然后输入一个循环引用,则Excel不会提出抗议。

取而代之的是,它使用“计算”​​选项卡上的设置来控制循环参考在被认为完成之前重复了多少次。

看来,“迭代”复选框的设置是作为工作簿的一部分存储的,但是当以后将工作簿加载到Excel中时,并不总是注意此设置。实际上,如果在打开工作簿之前发生以下任何情况,则将完全忽略该设置:

  • 您可以打开除首次启动Excel时创建的默认工作簿以外的其他任何工作簿。

  • 显示默认工作簿时,您更改“迭代”复选框。

Excel的作用是检查首次打开的任何工作簿的“迭代”复选框设置。该设置将成为当前使用Excel会话的“默认”。对于在同一会话期间加载的任何其他工作簿,将忽略“迭代”复选框的已保存设置。

此外,如果您在系统上定义了Personal.xls工作簿,则该文件中“迭代”复选框的设置始终用作默认值。为什么?因为Personal.xls将始终是打开的第一个工作簿,并且打开的第一个工作簿总是定义该设置的默认值。

如果您有一个使用循环引用的已保存工作簿,并且清除了“迭代”复选框(默认或显式),则当您打开包含循环引用的工作簿时,Excel将显示警告。如果不想看到警告,那么显而易见的解决方案是确保在打开任何其他工作簿之前先打开工作簿(以便使用其“迭代”设置),或者在打开工作簿之前显式设置“迭代”复选框。

如果您不想担心打开工作簿的顺序,又不想总是去更改“迭代”复选框的设置,则可以创建一个宏,以确保为工作簿选择了“迭代”复选框。如果将宏分配给工作簿的Open事件,则它将在每次打开工作簿时运行,从而确保您不会看到不想看到的警告。

宏显示如下:

Private Sub Workbook_Open()

Application.Iteration = True End Sub

如果您为系统定义了Personal.xls工作簿,则可以将此宏添加到其中,而不是添加到各个工作簿中。这样,您可以确保始终为每个Excel会话选中“迭代”复选框。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(2816)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: