简单的HLOOKUP与Excel 2010失败

我有一个Excel电子表格(由电子表格设备生成,但它更像一个Excel问题),当我使用HLOOKUPS时,不能正常工作 。 我使用一个简单的HLOOKUP来查找表中给定百分比的值。 对于两个确定的值,HLOOKUP失败。 这些值是0.9993和0.999。 这个Excel文档演示了这个问题: http : //dsokol.com/tokio/excelna.xlsx 。 单元格C6和C7显示为N / A,当它们打算用B和C填充时。如果我重新键入这些值,则HLOOKUP将再次开始工作。

任何人都可以解释为什么这是发生?

我同意巴里。 这个问题与它们是否是数字或string(它们都是数字)无关。 这似乎是存储二进制浮点数的一个限制 – 如下所述: http : //support.microsoft.com/kb/214118

Microsoft Excel和Microsoft Works中的浮点数的算术运算的许多组合可能会产生看起来不正确的结果,数量非常小。 例如,等式= 1 *(.5-.4-.1)可以被评估为数量(-2.78E-17),或者-0.0000000000000000278而不是0。

这个问题不是独一无二的,而是因为:

IEEE 754规定以二进制格式存储数字以减less存储要求,并允许所有微处理器上可用的内置二进制算术指令以相对快速的方式处理数据。 但是,一些简单的,不重复的十进制数字被转换成重复的二进制数字,不能以完美的准确性存储。

这种现象在“算术平等”中可见:

InterestingProblem

再次,这不是一个独特的问题:

此行为不是Excel或Works中的问题或限制; 出现这种行为是因为电气和电子工程师协会(IEEE)754浮点标准要求以二进制格式存储数字。

祝你好运。

问题是那些数字被存储为string而不是整数。 我想你需要在SpreadSheet Gear中显式声明列types。

如果打开xlsx文件作为zip文件,并在覆盖这些值之前和之后从xl\WorkSheets文件夹中提取Sheet1.xml ,则任何diff工具(例如winmerge使这一点很明显)。

我已经在这个要点上发布了XML差异。