Excel中匹配函数的精度误差 [英] Precision Error With Match Function In Excel

查看:20
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆