[英]Unexpected VLOOKUP & MATCH behaviour
当将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
为什么?
我的猜测(因为我自己遇到了无数次此问题,而您的解决方案就是我们所使用的解决方案),这与Excel中的精度值有关。 每当我处理小数时,我都会被迫“测试” Excel在显示值时是否在处理我的值,或者微型值也秘密存在于其中。
我们使用ROUND(),MROUND(),CEILING()和FLOOR()函数精确地“重置”值,然后再出于这个原因使用它们。
除非您开始格式化该单元格为8-10个十进制值,否则实际上可能是0.1025 ...会出现更多数字吗?
您可以很容易地沮丧地复制它。 在A1中输入0.1025 ,然后在A2中输入0.1026 。
现在尝试公式= EXACT(0.0001,A2-A1) 。 结果将为FALSE 。
如果在该单元格上运行EVALUATE FORMULA函数,您会看到一个微值导致数学值为0.000100000000000003,而不仅仅是0.0001 。
因此,舍入工具将显示的值校正为ACTUAL值,这就是我们这样做的原因。 是的,Excel!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.