Excel中匹配函数的精度误差 [英] Precision Error With Match Function In Excel
本文介绍了Excel中匹配函数的精度误差的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个数据框,比方说来自A1:C100,其中每个单元格都是一个值(不是从任何公式派生的),恰好以百分比的形式存储。我复制并粘贴数据框(例如A列)中某列的值,将其从大到小排序,然后将其粘贴到E列中。然后,我使用=MATCH(E1, $A$1:$A$100, 0)
,它按预期工作并返回正确的行。
但是,如果我随后向E中的每个值添加一个常量,假设F列=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)
),但是没有成功。
还有没有其他建议/其他人遇到过这样的情况?根本问题是什么?
推荐答案
精度更正的问题是它仅应用于匹配函数的"查找"组件。要获得更准确的"匹配率",建议您在源位置对要"搜索"的值进行舍入,或者只需部署以下内容:
= Match(round(range_1,6), round(range_2,6), 0)
根据您的示例/Q,您应该在哪里替身Range_1、Range_2以及相关/各自的范围。
注意-"在源位置"执行此操作的优势(即插入额外的列,比方说,RANGE_3,其中RANGE_3=ROUND(RANGE_2,6),然后在等式中插入带有RANGE_3的替身RANGE_2。以上)与计算速度有关(这会快得多,特别是如果Range_2非常长,例如>;30k行)。原因应该很明显:Match函数中的计算对于执行的每个匹配/单元格都是重复的,而"在源"版本将只应用计算"一次"(即,在所有相关行/单元格上)。希望这是有意义的,并祝您的努力好运。
ps-如有必要,将ROUND(RANGE,6)更改为ROUND(RANGE,4)。出于验证原因,在条件格式中使用类似内容时,我通常喜欢6 DPS. Ta, J这篇关于Excel中匹配函数的精度误差的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文