Excel如果相等且匹配不返回相同的东西

时间:2014-03-05 16:53:00

标签: excel if-statement match

我在单元格A1和B1中放了两个日期时间值。日期时间恰好是41703.0416666667。一个是从SQL数据库中输出另一个手动编写的。

= if(A1 = B1,1,0)的结果为1。 = MATCH(B1,A1,0)的结果是#N / A.

有没有人知道为什么会这样?

2 个答案:

答案 0 :(得分:1)

将十进制转换为二进制可能是个问题。见相关答案:

Simple HLOOKUP Failing with Excel 2010

这似乎是以二进制形式存储浮点数的限制 - 如下所述:http://support.microsoft.com/kb/214118

  

浮点数的许多算术运算组合   在Microsoft Excel和Microsoft Works中可能会生成显示的结果   非常少量的错误。例如,等式   = 1 *(。5-.4-.1)可以评估为数量(-2.78E-17),或者-0.0000000000000000278而不是0。

此问题不是excel独有的,而是由以下结果:

  

IEEE 754规定数字以二进制格式存储以减少   存储要求并允许内置二进制算术   所有微处理器都可以使用的指令来处理   数据以相对快速的方式进行。但是,有些数字是   简单的非重复十进制数转换为重复数   二进制数不能以完美的精度存储。

答案 1 :(得分:0)

问题在于浮点计算(请参阅http://support.microsoft.com/kb/78113),一种可能的解决方法是使用round()函数。在您的情况下,舍入到10或12位小数可能足以解决该问题。