当使用0.1025作为VLOOKUP或MATCH函数的lookup_value时,只有在将值硬编码为数字时,公式似乎才有效。如果引用另一个单元格中的值,则公式会产生#N / A错误。奇怪的是,如果首先将ROUND应用于参考单元,则问题似乎已被消除。另一个有效的解决方案是,如果单元格值首先乘以100然后乘以它的倒数,而2或5则不起作用。类似的行为发生在0.0875,0.1175和0.1425。
这里显示的公式可以解决这个问题。
复制下面并粘贴到单元格A1。
0.1025 =CEILING(A3,0.0025) =A1=B1
0.14821 =VLOOKUP(B1,A:B,2,0)
0.10163 =MATCH(B1,A:A,0)
=MATCH(0.1025,A:A,0)
=MATCH(ROUND(B1,4),A:A,0)
=MATCH(10.25/100,A:A,0)
=MATCH((B1*100)/100,A:A,0)
=MATCH((B1*2)/2,A:A,0)
以上产生的结果如下所示。
0.1025 0.1025 TRUE
0.14821 #N/A
0.10163 #N/A
1
1
1
1
#N/A
为什么?
答案 0 :(得分:0)
我的猜测(因为我自己遇到过这个问题,无数次,你的解决方案是我们使用过的),它与Excel中的精度值有关。每当我处理小数时,我都被迫“测试”Excel是否在显示它们时是否正在处理我的值,或者是否也存在微量值。
我们使用ROUND(),MROUND(),CEILING()和FLOOR()函数在这些值被进一步使用之前精确地“重置”它们。
0.1025可能真的是这样,除非你开始格式化该单元格8-10个十进制值...会出现更多数字吗?
你可以非常轻松地复制这个。在A1中,键入 0.1025 ,然后在A2中输入 0.1026 。
现在尝试公式 = EXACT(0.0001,A2-A1)。
结果将是 FALSE 。
如果您在该单元格上运行EVALUATE FORMULA函数,您将看到一个微值导致数学值为 0.000100000000000003 ,而不仅仅是 0.0001 强>
因此,舍入工具将显示的值更正为ACTUAL值,这就是我们这样做的原因。是的,Excel!