VLOOKUP没有在数组中找到值

时间:2015-03-25 09:14:49

标签: excel rounding vlookup ceiling

我使用VLOOKUP函数在数组中查找值,但有些值虽然在数组中可用,却给出了#N / A答案。

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

如果是数字,我检查了值的类型。

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

此外,我尝试了INDEX / MATCH组合并再次无效。

在我在链接中给出的示例中,当我在15.00 - 15.20之间键入时,它会出错但是尝试其他值,它会起作用。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:5)

这似乎是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

答案 1 :(得分:5)

您似乎遇到了Excel错误。

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

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

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

enter image description here

这必须是一个错误。

我建议您使用CEILING(F4,0.1)而不是ROUNDUP(F4,1),这似乎没有错误。 Nope,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)

答案 2 :(得分:0)

如果您想找到 15.10

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

将其更改为CEILING(F4,0.01),它将起作用:)