【发布时间】:2016-03-25 17:08:27
【问题描述】:
我有一个大型电子表格:700 多行,每行都引用了前一行。我使用参考函数:ROW()、COLUMN() 和 INDIRECT()、ADDRESS()。 (是的,我考虑过每 50-100 行固定一次值以减少计算跟踪。)
直到最近我才使用 OpenOffice.org,它运行良好。然而,当文件打开时,LibreOffice 似乎在某些行后放弃,进一步计算变成错误 522。有时更改会使其重新计算所有内容,并且当我撤消更改时错误消失并且不会再次出现。我还发现了 Ctrl-Shift-F9 (必须重新计算),这也使错误消失。
即使文件已经被LibreOffice多次保存和重新保存,当我打开文件时仍然报假错误522,所以它似乎不是兼容性问题。
一个很长的分支计算轨迹是否让软件认为它永远不会达到初始值,因此它必须是循环的? (我的固定值的想法可以解决。)或者还有其他我可能错过的东西吗?
更新
我看不出 INDEX() 会有什么帮助。我想引用正上方的单元格或正上方的行中的单元格。单元格 d46 可以指向 d45 或 b45 或 $a45,这在复制行时有效,但在插入或删除行时无效:如果您在上方插入一行,指向上方 1 行的引用将开始指向上方 2 行,所以每次我都必须编辑公式。该行(每一行)包含对上面行的多个引用,所以我认为最简单的方法是同一列的 INDIRECT(ADDRESS(ROW()-1,COLUMN())) 或 INDIRECT(ADDRESS(ROW() -1,1)) 用于 A 列...有更好的解决方案吗?
【问题讨论】:
-
INDIRECT 是volatile function,可能是导致问题的原因。我的第一步是尝试重写函数以不使用 INDIRECT;将 INDEX 视为可能的替代品。
标签: libreoffice libreoffice-calc