Table of contents
这个简短的教程解释了Excel循环引用的基本知识,以及为什么你要小心使用它们。 你还将学习如何检查、寻找和删除Excel工作表中的循环引用,如果以上都不行,如何启用和使用循环公式。
你试图在你的Excel工作表中输入一些公式,但由于某些原因,它不能工作。 相反,它告诉你一些关于一个 循环参考 你就是这样来到这个页面的吗?)
成千上万的用户每天都面临着同样的问题,仅仅是因为强迫Excel公式计算自己的单元格。 当你试图这样做时,Excel会抛出以下错误信息。
"小心,我们在你的工作簿中发现了一个或多个循环引用,可能导致你的公式计算不正确。"
简单地说,Excel想说的是:"嘿,我可能会被堵在环形路上。 你确定你要我继续前进吗?"
正如你所理解的那样,Excel中的循环引用是很麻烦的,按照常理,应该尽可能地避免它们。 然而,在某些罕见的情况下,Excel循环引用是你所面临的任务的唯一可能的解决方案。
什么是Excel中的循环引用?
这里有一个非常直接和简明的定义,就是 循环参考 由微软提供。
" 当一个Excel公式直接或间接引用到它自己的单元格时,它就会产生一个循环引用。 "
例如,如果你选择A1单元格并输入 =A1
输入任何提及A1的其他公式或计算都会产生同样的影响,例如 =A1*5
或 =if(a1=1, "ok")
.
一旦你点击回车键完成这样的公式,你就会得到以下警告信息。
为什么Microsoft Excel要给你提个醒呢? 因为Excel的循环引用可以无限期地迭代,形成一个无尽的循环,从而大大降低了工作簿的计算速度。
一旦你得到上述警告,你可以点击 帮助 当你关闭信息窗口时,Excel会显示一个新的信息。 零 (0)或 最后的计算值 是的,在某些情况下,带有循环引用的公式可以在试图计算自己之前成功完成,当这种情况发生时,Microsoft Excel会返回最后一次成功计算的值。
注意:在许多情况下,当你输入一个以上的循环引用公式时,Excel不会重复显示警告信息。
但是,为什么会有人想做这样一个愚蠢的公式,除了造成不必要的麻烦之外,什么也做不了呢? 对,没有一个正常的用户会想故意输入像上面这样的循环公式。 但是,你可能会在Excel工作表中意外地创建一个循环引用,这里有一个很常见的情况。
假设你想用通常的SUM公式将A列中的数值相加,而在这样做的时候,你无意中包括了总数单元格本身(本例中的B6)。
如果你的Excel不允许循环引用(默认情况下是关闭的),你会看到我们刚才讨论过的错误信息。 如果迭代计算被打开,那么你的循环公式会像下面的截图一样返回0。
在某些情况下,一个或多个蓝色箭头也会突然出现在你的电子表格中,所以你可能认为你的Excel已经疯了,即将崩溃。
事实上,这些箭头只不过是 追踪先例 或 追踪依赖者 我们稍后将讨论如何显示和隐藏这些箭头。
现在,你可能已经有了这样的印象:Excel中的循环引用是一种毫无价值的、危险的东西,并且可能想知道为什么Excel没有完全禁止它们。 如前所述,在一些非常罕见的情况下,在Excel中使用循环引用是合理的,因为它提供了一个更短、更优雅的解决方案,如果不是唯一可能的话。 下面的例子证明了这一点a公式。
使用Excel循环参考--公式示例
在我们之前的一个教程中,我们讨论了如何在Excel中插入今天的日期。 而在评论中,绝大多数的问题都是关于如何输入一个 时间戳 我很犹豫要不要回复这些评论,因为我知道的唯一解决方案涉及到循环引用,而且应该谨慎对待。 无论如何,这里有一个非常常见的情况......
假设你在A列有一个物品清单,你在B列输入交货状态。 是 在B列中的"",你希望当前的日期和时间被自动插入到C列的同一行中,作为一个 静态的不可改变的时间戳 .
使用一个微不足道的NOW()公式不是一个选项,因为这个Excel函数是不稳定的,这意味着每次重新打开或重新计算工作表时,它都会更新其值。 一个可能的解决方案是使用嵌套的IF函数,在第二个IF中使用循环引用。
=IF(B2="是", IF(C2="" ,NOW(), C2), " ")
其中B2是交货状态,C2是你希望出现时间戳的单元格。
在上述公式中,第一个IF函数检查B2单元格的" 是 "(或你提供给公式的任何其他文本),如果指定的文本在那里,它就运行第二个IF,否则返回一个空字符串。 而第二个IF函数是一个循环公式,如果C2中还没有一个值,它就获取当前的日期和时间,从而保存所有现有的时间戳。
注意:为了使这个Excel循环公式发挥作用,你应该允许在工作表中进行迭代计算,而这正是我们接下来要讨论的问题。
如何在Excel中启用/禁用循环引用
如前所述。 迭代计算 为了使循环公式发挥作用,你必须在你的Excel工作簿中启用迭代计算功能。
在 Excel 2019年 , Excel 2016 , ǞǞǞ 2013 ,以及 ǞǞǞ 2010 ,点击 文件 > 选择 ,请到 公式 ,并选择 启用迭代计算 下的复选框。 计算选项 节。
在Excel 2007中,点击 办公室按钮 > Excel选项 > 公式 > 迭代区域 .
在Excel 2003和更早的版本中, 迭代计算 选项位于 菜单 > 工具 > 选择 > 计算方式 标签。
当你打开迭代计算时,你必须指定以下两个选项。
- 最大迭代次数 框 - 指定公式应该重新计算的次数。 迭代次数越多,计算的时间就越长。
- 最大变化 box - 指定计算结果之间的最大变化。 数字越小,得到的结果越精确,Excel计算工作表的时间越长。
默认设置为100,用于 最大迭代次数 ,而0.001为 最大变化 它的意思是,Microsoft Excel将在100次迭代后或迭代之间的变化小于0.001时(以先到者为准)停止计算你的循环公式。
为什么要避免在Excel中使用循环引用
正如你已经知道的那样,在Excel中使用循环引用是一种滑稽的、不被推荐的方法。 除了性能问题和每次打开工作簿时显示的警告信息(除非开启了迭代计算),循环引用会导致一些其他问题,而这些问题并不明显。
例如,如果你选择了一个带有循环引用的单元格,然后不小心切换到公式编辑模式(按F2或双击单元格),然后你在没有对公式进行任何修改的情况下按下回车键,它将返回0。
因此,这里有许多受人尊敬的Excel大师的建议--尽可能避免在工作表中出现循环引用。
如何在Excel中找到循环引用
要检查你的Excel工作簿是否有循环引用,请执行以下步骤。
- 转到 公式 选项卡,点击 "A "旁边的箭头 错误检查 ,并指向 循环引用 最后输入的圆周率会显示在这里。
- 点击下面列出的单元格 循环引用 ,Excel会把你准确地带到那个单元格。
一旦你这样做,状态栏就会通知你,在你的工作簿中发现了循环引用,并显示其中一个单元格的地址。
如果在其他工作表中发现循环引用,状态栏只显示" 循环引用 ",没有细胞地址。
注意:当迭代计算选项打开时,该功能将被禁用,所以你需要在开始检查工作簿中的循环引用之前将其关闭。
如何删除Excel中的循环引用
遗憾的是,Excel中没有任何机制可以让你通过点击按钮来消除工作簿中的所有循环公式。 要消除它们,你必须通过执行上述步骤来单独检查每个循环参考,然后要么完全删除给定的循环公式,要么用一个或多个简单的公式取代它。
如何追踪公式和单元格之间的关系
在Excel循环引用不明显的情况下,可以用 追踪先例 和 追踪依赖者 特征可以给你一个线索,画出一条或多条线,显示哪些单元格影响或被选中的单元格影响。
要显示追踪箭头,请到 公式 标签> 公式审计 组,并点击其中一个选项。
追踪先例 - 追踪为公式提供数据的单元格,即画线表示哪些单元格影响所选单元格。
追踪依赖者 - 追踪依赖活动单元格的单元格,即画线表示哪些单元格受到所选单元格的影响。 换句话说,它显示哪些单元格包含引用所选单元格的公式。
或者,你可以使用以下快捷键。
- 追踪先例:Alt+T U T
- 追踪依赖者:Alt+T U D
要隐藏箭头,请点击 移除箭头 按钮,该按钮正好位于 追踪依赖者 .
在上面的例子中, 追踪先例 箭头显示了哪些单元格直接向B6提供数据。 正如你所看到的,B6单元格也包括在内,这使得它成为一个循环引用,并导致公式返回0。 当然,这个问题很容易解决,只需在SUM的参数中用B5替换B6。 =SUM(B2:B5)
其他循环参考可能不是那么明显,需要更多的思考和计算。
这就是你处理Excel循环引用的方法。 希望这个简短的教程能让你对这个 "盲点 "有所了解,现在你可以进一步研究,了解更多。 感谢你的阅读,期待下周在我们的博客上见到你。