簡體   English   中英

VLOOKUP沒有在數組中找到值

[英]VLOOKUP not finding value in array

我使用VLOOKUP函數在數組中查找值,但是盡管數組中有可用,但有些值給出了#N / A的答案。

為了對數字進行舍入,我使用了CEILING函數,但有趣的一點是在某些值中,它沒有用。

如果它是數字,我檢查了值的類型。

此外,我使用ROUNDUP功能,但沒有工作。

此外,我嘗試了INDEX / MATCH組合再次無效。

在我在鏈接中給出的示例中,當我在15.00 - 15.20之間鍵入時,它會出錯但是嘗試其他值,它會起作用。

我該如何解決?

這似乎是使用CEILING的返回值的VLOOKUPMATCH的錯誤。 如果您使用:

=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

看起來你遇到了一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM