[英]VLOOKUP not finding value in array
我使用VLOOKUP
函數在數組中查找值,但是盡管數組中有可用,但有些值給出了#N / A的答案。
為了對數字進行舍入,我使用了CEILING
函數,但有趣的一點是在某些值中,它沒有用。
如果它是數字,我檢查了值的類型。
此外,我使用ROUNDUP
功能,但沒有工作。
此外,我嘗試了INDEX
/ MATCH
組合再次無效。
在我在鏈接中給出的示例中,當我在15.00 - 15.20之間鍵入時,它會出錯但是嘗試其他值,它會起作用。
我該如何解決?
這似乎是使用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應該返回完全相同的結果(15.1),無論重要性是0.1,0.01,0.001等。
確實如此,根據Excel:當被問及它們是否相等時,答案總是TRUE
。
但在查找表中查找這些數學上相等的數字會得到不同的結果。
這必須是一個錯誤。
而不是
不, CEILING(F4,0.1)
,我建議您使用
ROUNDUP(F4,1)
,它似乎沒有錯誤。
ROUNDUP
也是錯誤的。 Axel Richter的回答建議將CEILING
包裝在ROUND
,這似乎會使問題消失。 您還可以轉換為字符串並返回到數字:
VALUE(TEXT(ROUNDUP(F4,1),"0.0"))
所以你有
=VLOOKUP(VALUE(TEXT(ROUNDUP(F4,1),"0.0")),A:B,2,FALSE)
如果要查找15.10的匹配項,您的CEILING
函數應該更精確
將其更改為CEILING(F4,0.01)
,它將起作用:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.