Excel 自定义格式数字(尤其是 0)

Excel custom formatting numbers (0 especially)

基于我做了一些格式化测试并遇到了以下问题:

如果我将 =SEQUENCE(4,,-2) 放入 A1 并使用 0;-0; 自定义格式范围,它将显示我想要的值。 如果我使用 =SUM(A1#)A6 中的溢出范围求和,它会显示正确的值 (-2)。

如果我在 B1 中输入以下内容: =TEXT(SEQUENCE(4,,-2),"0;-0;") 我希望得到与上面相同的结果。但是 Excel 将其视为文本(默认情况下左对齐)。 如果我使用 =SUM(B1#)B6 中的溢出范围求和,它会显示结果 0,而如果我对 B1+B2 求和,我会得到正确的结果。

问题 1:B6 中错误的求和结果与 B7 中的正确求和结果的解释是什么?

问题 2:是否有其他方法可以将零显示为空白,同时保留计算包含该值的范围的能力?

问题一:

TEXT函数return的文本和计算机无法将文本串相加。他们只能将数字相加。

Excel 有时 会自动执行类型转换,以允许公式提供 Excel 猜测的预期结果。在这种情况下,它有时会先将文本转换为数字,然后再将它们相加。这可以让用户更容易点赞,但不一致很容易导致错误。

假设A1 和A2 被格式化为文本并且包含文本字符“1”。 Excel 将为运算符 (+-*/) 进行隐式类型转换:

  • =A1 + A2

它不会对函数中的范围进行转换:

  • =SUM(A1:A2)
  • =SUM(A1,A2)

当接受一个范围时,SUM 函数将忽略所有文本,因此它仍然可以对范围内的数字求和而不会抛出错误。如果范围内的所有单元格都包含文本,它将 return 0.

但是,如果您尝试对包含无法转换为数字的文本的两个单元格使用加法运算符,则会引发错误。

请注意,当您将“A1 + A2”放入 SUM 函数中时,excel 首先计算加法运算(因为这是函数中必须首先计算的单个输入),因此它转换此时将 A1 和 A2 转换为数字以创建单个数值结果,然后 SUM 函数仅将单个数值作为输入并 return 再次将其作为总和。

如果您对两个单独的输入使用 SUM,例如 =SUM(A1,A2),它不会先将任一输入转换为数字。

问题二:

要在范围内使用 SUM 函数获得正确的结果,您可以修改原始序列公式,使其提供数值。这可以通过多种方式完成:

1 - 通过乘以 1(强制另一个隐式类型转换)将文本转换回数字,处理为无法转换为数字的空字符串生成的错误:

=IFERROR(TEXT(SEQUENCE(4,,-2),"0;-0;")*1,"")

2 - 使用 IF 语句测试 0 和 return 空字符串:

=IF(SEQUENCE(4,,-2)<>0,SEQUENCE(4,,-2),"")

3 - 反转序列两次,仅当它等于 0 时才会抛出错误:

=IFERROR(1/(1/SEQUENCE(4,,-2)),"")

OR 您可以修改 SUM 公式以在输入时将范围转换为数字:

=SUM(IFERROR(B1#*1,0))

但是,这种方法要求您修改所有查看原始序列的公式。如果原始序列打算用作数字(在这种情况下),最好首先将其生成为数字。