3

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

谁能解释为什么会这样?

4

2 回答 2

5

问题是这些数字被存储为字符串而不是整数。我想您需要在 SpreadSheet Gear 中明确声明列类型。

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

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

于 2012-10-02T18:00:31.013 回答
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 浮点标准要求数字以二进制格式存储。

祝你好运。

于 2012-10-02T20:45:51.643 回答