【发布时间】:2020-08-27 17:06:57
【问题描述】:
Excel 将值 0 分配给空白单元格 (Excel: why the value of a blank cell is zero?)。 ISBLANK 函数检查内容。
但是:
让我们考虑A1 是空的。 B2 是 =A1&"foo"。 B2 结果为“foo”而不是“0foo”。为什么?
【问题讨论】:
-
出于数字目的,该值为 0。但您并未使用该单元格执行数学方程式,而是将该单元格用作字符串(文本)。与 VBA 类似,新的 Integer/Long 数据类型的默认值为
0。新字符串类型的默认值为""(或vbNullString)。在您的示例中,您将单元格视为字符串,因此空单元格的字符串值是空字符串。 -
所以如果解析器评估一个标记,它必须知道“外部”上下文?我对编译器开发没有那么深入,但这对我来说似乎很奇怪
-
我不确定解析器在哪里发挥作用,但 Excel 评估空单元格的方式取决于您使用的运算符。看到
=A1 + A2和=A1 & A2之间的区别了吗?第一个被 Excel 评估为数字表达式 - 如果这些单元格中的任何一个为空白,则将被视为数字 0,而后者被评估为字符串,而空白被评估为空字符串,因为那是 使用此特定运算符时空单元格的默认值。 -
因此,在对其他问题进行了更多研究之后,也许我对您要问的问题了解得更好。
=A1返回 0,因为 Excel 总是首先计算为数值表达式。该等式中没有任何内容可以推断您正在使用字符串。现在在 A1 中输入一个简单的'。您刚刚将 A1 变成了一个字符串 - 即使它仍然是一个“空白”单元格。 Excel 无法再作为数学表达式进行计算,因此它现在将作为字符串进行计算。 -
对。值从
Null变为零长度字符串""。所以它不是空白的。就好像你要输入你在这篇文章中一直在讨论的0。 0 是“无”的数学等价物。零长度字符串是等效于“Nothing”的字符串。但是我没有在哪里说Nothing = Null。
标签: excel