【问题标题】:Simple HLOOKUP Failing with Excel 2010Excel 2010 的简单 HLOOKUP 失败
【发布时间】:2012-10-02 17:41:45
【问题描述】:

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

谁能解释为什么会这样?

【问题讨论】:

    标签: excel excel-formula excel-2010 worksheet-function spreadsheetgear


    【解决方案1】:

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

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

    我已在 this gist 上发布了 XML 差异。

    【讨论】:

    • 我不知道您可以解压缩 excel 文件并查看内部结构。我无缘无故地搞乱了一个十六进制编辑器!
    • @DavidJ.Sokol 对于任何具有以 X 结尾的四个字母扩展名的 MSFT 文件都是如此。X 代表 XML。
    • 在发布的 Excel 表中,所有值都是数字,例如=ISNUMBER(C2) 和 ISNUMBER(C5) 都给出 TRUE。我怀疑原因与此有关support.microsoft.com/kb/214118
    【解决方案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 浮点标准要求 数字以二进制格式存储。

    祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-25
      • 1970-01-01
      • 2019-12-11
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多