我有一个Excel电子表格(由电子表格设备生成,但它更像是一个Excel问题)在我使用HLOOKUPS时无法正常运行。我使用一个简单的HLOOKUP来查找表中给定百分比的值。对于两个特定值,HLOOKUP失败。这些值为0.9993和0.999。这个excel文档演示了这个问题:http://dsokol.com/tokio/excelna.xlsx。单元格C6和C7显示为N / A,当它们打算用B和C填充时。如果我重新键入值,HLOOKUP将再次开始工作。
任何人都可以解释为什么会这样吗?
答案 0 :(得分:5)
问题是这些数字是存储为字符串而不是整数。我猜你需要在SpreadSheet Gear中明确声明列类型。
如果您将xlsx文件作为zip文件打开,并在覆盖值之前和之后从Sheet1.xml
文件夹中提取xl\WorkSheets
,那么任何差异工具(例如winmerge都会显而易见)。
我已在this gist上发布了XML差异。
答案 1 :(得分:2)
我同意巴里的观点。此问题与它们是数字还是字符串无关(它们都是数字)。这似乎是以二进制形式存储浮点数的限制 - 如下所述:http://support.microsoft.com/kb/214118
浮点数的许多算术运算组合 在Microsoft Excel和Microsoft Works中可能会生成显示的结果 非常少量的错误。例如,等式 = 1 *(。5-.4-.1)可以评估为数量(-2.78E-17),或者-0.0000000000000000278而不是0。
此问题不是excel独有的,而是由以下结果:
IEEE 754规定数字以二进制格式存储以减少 存储要求并允许内置二进制算术 所有微处理器都可以使用的指令来处理 数据以相对快速的方式进行。但是,有些数字是 简单的非重复十进制数转换为重复数 二进制数不能以完美的精度存储。
这种现象在“算术平等”中可见:
同样,这不是excel独有的问题:
此行为不是Excel或Works的问题或限制; 出现这种情况的原因是电气和电子研究所 电子工程师(IEEE)754浮点标准要求 数字以二进制格式存储。
祝你好运。