我有一個大型電子表格: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