【问题标题】:VLOOKUP not finding value in arrayVLOOKUP 未在数组中找到值
【发布时间】:2015-03-25 09:14:49
【问题描述】:

我使用VLOOKUP 函数在数组中查找一个值,但有些值给出了#N/A 答案,尽管在数组中可用。

为了对数字进行四舍五入,我使用了CEILING 函数,但有趣的是在某些值中,它不起作用。

我检查了值的类型是否为数字。

另外,我使用了ROUNDUP 函数但没有用。

另外,我尝试了INDEX/MATCH 的组合,但还是不行。

在我在链接中给出的示例中,当我在 15.00 - 15.20 之间输入时,它会给出错误,但尝试其他值时,它可以工作。

我该如何解决这个问题?

【问题讨论】:

    标签: excel rounding vlookup ceil


    【解决方案1】:

    这似乎是VLOOKUPMATCH 使用CEILING 的返回值的错误。如果你使用:

    =VLOOKUP(ROUND(CEILING(F4,0.1),1),A:B,2,FALSE)

    然后它按预期工作。

    如果我们用 VBA 看这个,我们就会看到会发生什么。应该归咎于CEILINGROUNDUP。见例子:

    Sub testCeilingAndRoundup()
    
     Dim v As Double, test As Boolean, diff As Double
    
     v = [CEILING(15.1,0.1)] '15.1
     test = (v = 15.1) 'FALSE
     diff = 15.1 - v '-1.776...E-15
    
     v = [ROUNDUP(15.25,1)] '15.3
     test = (v = 15.3) 'FALSE
     diff = 15.3 - v '1.776...E-15
    
    End Sub
    

    【讨论】:

      【解决方案2】:

      您似乎遇到了 Excel 错误。

      CEILING 应用于数字 15.1 应返回完全相同的结果 (15.1),无论其显着性是 0.1、0.01、0.001 等。

      确实如此,根据 Excel:当被问及它们是否相等时,答案总是TRUE

      但是在查找表中查找这些数学上相等的数字会得到不同的结果。

      这一定是一个错误。

      我建议你使用看起来没有错误的ROUNDUP(F4,1),而不是CEILING(F4,0.1)不,ROUNDUP 也有错误。 Axel Richter's answer 建议将 CEILING 包装在 ROUND 中,这似乎确实使问题消失了。您还可以转换为字符串并返回数字:

      VALUE(TEXT(ROUNDUP(F4,1),"0.0"))
      

      这样你就有了

      =VLOOKUP(VALUE(TEXT(ROUNDUP(F4,1),"0.0")),A:B,2,FALSE)
      

      【讨论】:

        【解决方案3】:

        如果您想找到 15.10

        的匹配项,您的 CEILING 函数应该更精确

        将其更改为 CEILING(F4,0.01) 即可:)

        【讨论】:

        • 如果输入例如15.09。目的显然是将其四舍五入到 15.10 并返回 95,但您的公式给出了错误。
        • 另外,我不明白 为什么 CEILING(15.10,0.1)CEILING(15.10,0.01) 的行为会有所不同(尽管测试表明它们确实如此)。原则上两者都应返回完全相同的数字,即 15.1。所以我不明白你为什么建议这个答案!
        • CEILING(15.10, 0.1)CEILING(15.10, 0,01) 是相同的。没有区别。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-27
        • 2019-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-14
        • 1970-01-01
        相关资源
        最近更新 更多