VLOOKUP未在数组中find值
我使用VLOOKUP
函数来查找数组中的值,但是尽pipe数组中有可用值,但仍有一些值给出了N / A答案。
为了收集数字,我使用CEILING
函数,但有趣的点在某些值,它没有工作。
我检查了值的types,如果它是数字或不。
另外,我使用ROUNDUP
function,但没有工作。
另外,我试过INDEX
/ MATCH
组合,再次没有工作。
在我在链接中给出的例子中,当我在15.00 – 15.20之间input时,它给出了错误,但尝试了其他值,它的工作原理。
我该如何解决?
这似乎是一个使用了CEILING
的返回值的VLOOKUP
和MATCH
的错误。 如果你使用:
=VLOOKUP(ROUND(CEILING(F4,0.1),1),A:B,2,FALSE)
那么它按预期工作。
如果我们用VBA来看这个,我们会看到会发生什么。 责怪应该是真正的CEILING
和ROUNDUP
。 看例子:
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
看起来你已经遇到了一个Excel错误。
无论是否为CEILING
,对15.1应用CEILING
都应返回完全相同的结果(15.1)。
事实上,根据Excel的说法,当被问及他们是否平等时,答案总是为TRUE
。
但是在查找表中查找这些math上相同的数字会得出不同的结果。
这必须是一个错误。
而不是 不, CEILING(F4,0.1)
,我build议你使用看起来没有缺陷的ROUNDUP(F4,1)
。ROUNDUP
也是越野车。 Axel Richter的回答build议将CEILING
包装在一个ROUND
,这似乎确实使问题消失了。 您也可以转换为string并返回到数字:
VALUE(TEXT(ROUNDUP(F4,1),"0.0"))
所以你会有
=VLOOKUP(VALUE(TEXT(ROUNDUP(F4,1),"0.0")),A:B,2,FALSE)
如果你想find15.10的匹配,你的CEILING
函数应该更加精确
将其更改为CEILING(F4,0.01)
,它将起作用:)