Excel 中的双引号和 IF 函数

Excel 中的双引号和 IF 函数

我对使用双引号和数字感到困惑。我知道如果我们需要在 excel 中引用文本或字符串,我们需要在 excel 中用双引号将其括起来。但是数字呢?考虑以下公式,它工作正常:

=IF(OR(E5="NY",E5="LA",E5="CA"),1000,0)

还可以考虑这个公式,它也能很好地工作:

=IF(OR(E2="LA",E2="CA",E2="NY"),"1000","0")

这两个公式有什么区别?我认为第一个公式会生成 1000 和 0 作为数字,而第二个公式会生成这两个数字作为文本?但是,当我对第二个公式生成的数字执行任何算术运算时(我假设它生成数字作为文本),算术运算工作正常!那么在 IF 函数中,用引号括住数字和不用引号括住数字之间有什么区别?

答案1

正如您所注意到的,Excel 在将您在引号中输入的内容作为公式结果输出时,会将其视为文本。

如果您以逻辑上明确希望将任何看起来像数字的东西视为数字的方式使用这些结果,并且不存在“同等或更高有效性”的竞争逻辑,Excel 就会这样做。因此,创建六个这样的文本数字条目并SUM在单元格中使用,Excel 会很好地将它们相加。

但是使用其中一个作为查找值,因此 Excel 有充分的理由相信它的文本状态取代了它可能是一个数字值的事实,并且查找将失败(当然,如果在查找范围中寻找的值是数字,而不是文本!)。

因此,您会看到,在很多情况下,Excel 会将文本值数字视为数字,而不是文本。而其他时候,Excel 似乎完全忘记了它是如何做到这一点的。上述指南将帮助您应对任何给定的用途,但当然,MS 的程序员可能不会想到您“说真的,我显然是想将这些用作数字”...

此外,您可能会看到这样的“怪异”,例如,使用SUMIF,虽然它很乐意以数字的方式包含值,如果在“总和范围”中,它可能不会将该值视为除文本之外的任何值,如果它在“决定总和范围”中。因此,如果在 A1 中,SUMIF(B1:B5, ">"&A1)可能会看到它的值 A1 为 0,因为它包含文本,并对 B1:B5 进行求和,但是`SUMIF(A1:A5,“>”&B1)可能看不到它的总和,如果 B1 的值为 30,因为在这里它可能会将其视为 0 的值,而不是 >30。

逻辑与上面的相同,但对于难以弄清楚发生了什么事的用户来说,这似乎相当难以理解。

顺便说一句,上面是一个说明观点的例子。SUMIF在两种情况下都可能将其用作数字,或者都不用...我还没有尝试过。

此外,如果按照第二个公式进行操作,文本应该是什么样的,而且是什么样的,这一点非常正确。只是 Excel 愿意在角落周围流血,可以这么说。日常生活就是如何找到角落的位置,如果确实如此。我从未在任何人的帮助网站上看到过试图列出此类内容的尝试。

答案2

我想进一步扩展 Jeorje 的回答,而不是取代它。

正如他们指出的那样,Excel 的解释器会做出一些假设,如果很明显这就是您想要的,它会将存储为文本的数字转换为其数值。但这会导致一些非常不可预测的行为,因此您必须非常小心地让 Excel 做出决定。示例:

=SUM(A1:A3)0如果 A1:A13 包含,则返回{TRUE,TRUE,FALSE},表示没有发生转换。

=SUM(- -(A1:A3))返回2,表示数学运算(“- -”)提醒 Excel 注意我们的数字意图。执行明显的数学运算通常会强制转换。

但奇怪的是:

=SUM(TRUE,TRUE,FALSE)返回2表示转换已发生。 =SUM({TRUE,TRUE,FALSE})返回0表示转换未发生。

如果您习惯使用 Excel 来正确完成此操作,然后第一次向 SUM() 提供逻辑数组,这可能会让您陷入困境。

得到的经验教训是:在假设 Excel 会在每种具体情况下正确解释您的意图时要非常小心。

相关内容