Libreoffice 将公式从范围引用转换为表格引用

Libreoffice 将公式从范围引用转换为表格引用

我有一个奇怪的问题

给定以下 libreoffice calc 表:

定义范围“myrange”,其内容如下:

1 2 3

还有一个公式字段:

=myrange[Two]

结果是2

现在:昨天,我可以在 libreoffice 中创建这样一个文档,将其保存为 ods,关闭它,再次加载该文件,并且公式看起来如上所述。到目前为止,一切顺利。

今天,当我尝试同样的事情时,在加载已保存的文档后,公式发生了变化。现在它看起来像这样=$Sheet1.$B$2。完全奇怪,特别是当我处理文档,保存它时,一切看起来都很好,但重新打开文件时,它看起来不一样了。我甚至没有更改文件格式。

在两次尝试之间,我尝试将第一张表导出为 Excel xlsx 和 xls 格式,也许这会改变一些全局设置?

是否有任何设置会影响 libreoffice 如何保存公式?

答案1

好的,没有解决方案,但我想我现在知道发生了什么:我昨天以 xlsx 格式保存了文件,并且可能从未尝试重新加载 ods。

似乎只有 xlsx 才能保存此公式。但该公式格式适用于 libreoffice,而 excel 不支持这种引用 - 太奇怪了。一旦我将其保存到 ods,公式就会以翻译形式保存(与 Excel 兼容但为 ods 格式)。

所以我可以选择

  • 与 excel 兼容的 ods,这会混淆引用,使得以后很难更改或理解它们
  • 与 excel 不兼容的 xlsx,它保留了公式但同时丢失了数据范围,因此经过 2-3 次保存/加载循环后,所有公式都会消失,#NAME?[column]我必须通过原始引用进行搜索替换(这仍然是目前最好的解决方法)

我仍然希望得到另一个答案,展示如何以 ods 格式保存这些公式:)

答案2

有两种不同类型的命名范围;它们实际上没有不同的名称,我认为这很令人困惑,但事实就是如此。一种类型简称为命名范围,另一种类型称为数据库范围。您可以以不同的方式访问/定义它们:

命名范围:工作表-->命名范围和表达式-->定义

数据库范围:数据-->定义范围

为了实现您的目标,您的公式应该是这样的:

=hlookup("Two", myrange, 2, 0)

据文献记载“数据库范围不能相对于工作表内的基地址进行引用,但使用命名范围则可以。“但我发现在 hlookup 公式中使用数据库范围也有效。但为了安全起见,我建议使用命名范围。

保存然后重新打开文件显示,在两种范围命名方法中,公式均未发生变化。

相关内容