假设一个Libreoffice电子表格仅包含两个单元格,即A1和A2,则在单元格A1中具有字符串“ abc”,在单元格A2中具有字符串“ = A1”。
|---+------+ | | A | (Showing formulas) |---+------+ | 1 | abc | | 2 | =A1 | |---+------+
显然,单元格A2将显示与单元格A1相同的内容,即“ abc”,如下所示。
|---+------+ | | A | (Showing values) |---+------+ | 1 | abc | | 2 | abc | |---+------+
此时,假定您删除单元格A1的内容,以使A1变为空。 A2会怎样?答:A2显示数字零。
|---+------+ | | A | (Showing values) |---+------+ | 1 | | | 2 | 0 | |---+------+
我认为这种行为是不合理的。我认为A2也应该什么也不显示!
我以为我可以通过调整一些配置来更改此设置,但我得到的内容有些晦涩,“工具-选项-公式-详细信息”,但效果不尽人意。
这里有一个具体的例子来支持我的论点,即标准行为确实是不合理的。给定电子表格:
|---+------+------+------------------| | | A | B | C | (Showing formulas) |---+------+------+------------------| | 1 | 2 | 4 | =average(A1:B1) | | 2 | =A1 | =B1 | =average(A2:B2) | |---+------+------+------------------|
显示为
|---+---+---+---| | | A | B | C | (Showing values) |---+---+---+---| | 1 | 2 | 4 | 3 | | 2 | 2 | 4 | 3 | |---+---+---+---|
假设我们删除A1。表格将显示
|---+---+---+---| | | A | B | C | (Showing values) |---+---+---+---| | 1 | | 4 | 4 | | 2 | 0 | 4 | 2 | |---+---+---+---|
,我认为C2应该没有理由显示2。我认为它应该具有与C1相同的值,即4。毕竟,第2行本质上是在尝试复制第1行。
问题:有没有一种方法可以配置Libreoffice,以便一个单元 提到一个空单元格还会显示一个空单元格吗?
答案 0 :(得分:0)
(至少)有两种方法可以处理空单元格引用:
默认情况下,LibreOffice Calc显示零值(根据单元格格式,为0
或为布尔值FALSE
)。您可以在菜单Tools
-> Options
-> LibreOffice Calc
-> View
中更改此行为:在Display
下,取消选中Zero Values
:>
虽然隐藏零值将全局应用于整个odt文件,但调整公式仅影响引用另一个单元格的单元格。除了简单的=A1
,还可以使用以下代码:
=IF(A1="";""; A1)
该公式将检查引用的单元格是否为空,并在这种情况下返回空字符串,否则返回引用的单元格的值。如果引用的单元格为空,则引用的单元格也将为空,而与Show Zero Values
设置无关。
答案 1 :(得分:0)
稍微研究一下用户定义的功能(轻轻地 被@tohuwawohu推动这样做),这是我的解决方案,用 在不了解用户定义函数之前,我已经理解该语言,并在6.0.7.3版中进行了测试。
通过菜单栏,转到Tools
-Macros
-Organize Macros
-LibreOffice Basic...
单击标记为Organizer...
的按钮
在小窗口上,选择当前电子表格的名称
单击标记为New...
的按钮,然后输入模块的名称,说“ MyModule”,然后单击Ok
返回窗口“ LibreOffice Basic宏管理器”,单击Edit
您现在位于IDE(集成开发环境)中,您将在其中定义功能。首先,单击右上角大窗口中的任意位置以将其激活。
转到最后一行并输入:
Function id(x)
id = x
End Function
这将创建一个名为id
的用户定义函数,该函数实际上是身份函数。
就是这样。现在,为了对其进行测试,请返回工作表窗口(例如,通过菜单栏选项Window
)并输入以下内容
|---+---------+---------+-----------------| | | A | B | C | (Showing formulas) |---+---------+---------+-----------------| | 1 | 2 | 4 | =average(A1:B1) | | 2 | =id(A1) | =id(B1) | =average(A2:B2) | |---+---------+---------+-----------------|
您应该看到的
|---+---+---+---| | | A | B | C | (Showing values) |---+---+---+---| | 1 | 2 | 4 | 3 | | 2 | 2 | 4 | 3 | |---+---+---+---|
现在这是最重要的部分:删除单元格A1。然后您将看到
|---+---+---+---| | | A | B | C | (Showing values) |---+---+---+---| | 1 | | 4 | 4 | | 2 | | 4 | 4 | |---+---+---+---|
我认为这是预期的行为!
结论:当您在单元格A2中输入=A1
时,您不会完全了解
您在A1中。 Libreoffice做出了一个猜测(我认为不应该这样)
当A1为空时,您真正想要的A2为零。
使用=id(A1)
(从逻辑上讲,这与=A1
是无法区分的)
Libreoffice被以某种方式阻止进行任何有趣的解释并提出
在A2中完全与在A1中一样,包括A1为空的情况。
引用丹·阿里利(Dan Ariely)的“可预测的非理性:塑造我们决策的隐性力量”的话:
“零历史悠久。巴比伦人发明了 零;古希腊人以崇高的态度辩论了这件事(怎么可能 什么都没有?);古代印度学者Pingala将零与 数字1获得两位数;玛雅人和罗马人 将其数字系统的一部分归零。但零终于找到了自己的位置 大约在公元498年,当时印度天文学家Aryabhatta躺在一张床上 早上,惊呼道:“ Sthanam sthanam dasa gunam”,翻译为, 大概是“价值的十倍之地”。有了这个主意 基于十进制的位值概念的诞生。现在零开始了:它 传播到阿拉伯世界,在那里蓬勃发展;越过伊比利亚人 半岛到欧洲(由于西班牙的摩尔人);有一些调整 来自意大利人;最终航行到新大陆, 零最终找到大量就业机会(连同 数字1)放在硅谷。”
我会很谦虚地补充说,电子表格承认某些代表 “虚无”甚至比零更空灵 本身:一个空单元格!