Excel中匹配函数的精度误差

Eul*_*ild 5 excel excel-formula

我有一个数据框,比如说来自 A1:C100,其中每个单元格都是一个值(不是从任何公式派生的),恰好以百分比形式存储。我复制并粘贴数据框中某列的值(比如 A 列),从最大到最小对其进行排序,然后将其粘贴到 E 列中。然后我使用=MATCH(E1, $A$1:$A$100, 0),它按预期工作并返回正确的行。

但是,如果我随后向 E 中的每个值添加一个常量,例如列 F is =E+1,并且使用=MATCH(F1-1, $A$1:$A$100, 0)大约 90% 的值仍然是正确的,但有些返回 #N/A。

如何在不更改原始数据框的情况下解决此问题?我已经尝试将数据四舍五入到各种精度点(例如=MATCH(ROUND(F1-1,4), $A$1:$A$100, 0)),或使用非精确匹配(例如=MATCH(F1-1, $A$1:$A$100, 1)甚至类似的东西=MATCH(F1-.999, $A$1:$A$100, -1)),但没有运气。

任何其他建议/其他人曾经遇到过这样的事情吗?根本问题是什么?

JB-*_*007 3

精度校正的问题在于它仅应用于 Match 函数的“查找”组件。为了获得更准确的“匹配”率,建议您对源中“搜索”的值进行四舍五入,或者简单地部署以下内容:

= Match(round(range_1,6), round(range_2,6), 0)
Run Code Online (Sandbox Code Playgroud)

您可以将 range_1、range_2 替换为每个示例/q 的相关/相应范围。

注意 - “在源头”执行此操作的优点(即插入附加列,例如 range_3,其中 range_3 = round(range_2,6),然后在上面的等式中用 range_3 替换 range_2)涉及计算速度(这将是更快,特别是如果 range_2 很长,例如 >30k 行)。这样做的原因应该是显而易见的:匹配函数中的计算会针对执行的每个匹配/单元格重复进行,而“源”版本只会应用计算“一次”(即跨所有相关行/单元格) )。

希望这是有道理的,祝你一切顺利。

PS - 如有必要,将 round(range,6) 更改为 round(range,4) 。出于验证原因,在条件格式中使用类似的内容时,我通常喜欢 6 dps...

塔杰