【问题标题】:How does excel handle empty cellsexcel如何处理空单元格
【发布时间】: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


【解决方案1】:

Excel 将使用默认的空变量值作为空单元格的值,具体取决于您尝试访问它的方式。
如果是作为数值使用,excel会使用空IntegerDouble等的默认值,即0。
如果您将其用作字符串,例如与="foo" & A1 连接时,它将使用String 默认空值,即""。所以"foo" & "" 就是"foo"

请参阅here 以获得更好的解释。

【讨论】:

    【解决方案2】:

    因为=ISBLANK()=0 不是同一个东西。

    如果没有设置任何内容,单元格将返回 true 到 ISBLANK。

    如果单元格包含 0 值,或者它包含一个计算结果为 0 的值,或者如果它包含一个计算结果为 0 的字符串,或者如果您尝试使用空白单元格执行方程式,则单元格将返回 0 .方程需要数字,如果对空白的东西执行方程,那么它与使用 0 的效果相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      相关资源
      最近更新 更多