繁体   English   中英

意外的VLOOKUP和MATCH行为

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM