我有一个大型电子表格:700多行,每个都有对前一行的引用。我使用参考函数:ROW()
,COLUMN()
和INDIRECT()
,ADDRESS()
。 (是的,我已经考虑每隔50-100行固定一个值以减少计算跟踪。)False错误522:循环引用
直到最近我使用OpenOffice.org并且它工作正常。然而,LibreOffice在打开文件时似乎放弃了一些行并且进一步的计算变成了错误522.有时候,一次更改会重新计算它,并且当我撤消更改时,错误消失并不再出现。我也发现了关于Ctrl-Shift-F9(必须重新计算),这也使得错误消失。
即使该文件已被LibreOffice保存并重新保存好几次,它仍然会报告错误522当我打开该文件时,所以它似乎不是兼容性问题。
问题是一个很长的分支计算线索使软件认为它永远不会达到初始值,因此它必须是循环的? (我的固定价值观念可以解决这个问题。)或者还有其他我可能错过的东西?
UPDATE
我看不到INDEX()会如何帮助。我想引用上面的一个单元格或紧接着上面一行的单元格。单元格d46可能指向d45或b45或$ a45,并且在复制行时会起作用,但在插入或删除行时不起作用:如果在上面插入一行,则指向上方1行的引用将开始指向上方2行,所以每次我都要编辑公式。行(每行)包含几行对上面行的引用,所以我认为最简单的方法是同一列的INDIRECT(ADDRESS(ROW() - 1,COLUMN()))或INDIRECT(ADDRESS(ROW() -1,1))列A ......任何更好的解决方案?
INDIRECT是[volatile函数](http://chandoo.org/wp/2014/03/03/handle-volatile-functions-like-they-are-dynamite/),可能是导致问题的原因之一。我的第一步是尝试重写不使用INDIRECT的函数;将INDEX视为可能的替代品。 – Lyrl