VLOOKUP 未在数组中找到值
VLOOKUP not finding value in array
我使用 VLOOKUP
函数在数组中查找值,但有些值给出了 #N/A 答案,尽管在数组中可用。
为了对数字进行四舍五入,我使用了 CEILING
函数,但有趣的是在某些值中,它不起作用。
我检查了值的类型是否为数字。
另外,我用了ROUNDUP
功能,但是没有用。
此外,我尝试了 INDEX
/MATCH
组合,但还是没有用。
在我在 link 中给出的示例中,当我在 15.00 - 15.20 之间输入时,它给出了错误,但尝试其他值时,它起作用了。
我该如何解决这个问题?
如果您想找到 15.10
的匹配项,您的 CEILING
函数应该更精确
将其更改为 CEILING(F4,0.01)
即可:)
这似乎是 VLOOKUP
和 MATCH
使用 CEILING
的 return 值的错误。如果您使用:
=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 应该 return 完全相同的结果 (15.1),无论显着性是 0.1、0.01、0.001 等。
根据 Excel,确实如此:当被问及它们是否相等时,答案总是 TRUE
。
但是在查找 table 中查找这些数学上相等的数字会给出不同的结果。
这一定是一个错误。
而不是 CEILING(F4,0.1)
,我建议您使用 ROUNDUP(F4,1)
,它似乎没有错误。 不,ROUNDUP
是错误的出色地。 建议将 CEILING
包装在 ROUND
中,这似乎可以解决问题。您还可以转换为字符串并返回数字:
VALUE(TEXT(ROUNDUP(F4,1),"0.0"))
所以你会
=VLOOKUP(VALUE(TEXT(ROUNDUP(F4,1),"0.0")),A:B,2,FALSE)
我使用 VLOOKUP
函数在数组中查找值,但有些值给出了 #N/A 答案,尽管在数组中可用。
为了对数字进行四舍五入,我使用了 CEILING
函数,但有趣的是在某些值中,它不起作用。
我检查了值的类型是否为数字。
另外,我用了ROUNDUP
功能,但是没有用。
此外,我尝试了 INDEX
/MATCH
组合,但还是没有用。
在我在 link 中给出的示例中,当我在 15.00 - 15.20 之间输入时,它给出了错误,但尝试其他值时,它起作用了。
我该如何解决这个问题?
如果您想找到 15.10
的匹配项,您的CEILING
函数应该更精确
将其更改为 CEILING(F4,0.01)
即可:)
这似乎是 VLOOKUP
和 MATCH
使用 CEILING
的 return 值的错误。如果您使用:
=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 应该 return 完全相同的结果 (15.1),无论显着性是 0.1、0.01、0.001 等。
根据 Excel,确实如此:当被问及它们是否相等时,答案总是 TRUE
。
但是在查找 table 中查找这些数学上相等的数字会给出不同的结果。
这一定是一个错误。
而不是 不,CEILING(F4,0.1)
,我建议您使用 ROUNDUP(F4,1)
,它似乎没有错误。ROUNDUP
是错误的出色地。 CEILING
包装在 ROUND
中,这似乎可以解决问题。您还可以转换为字符串并返回数字:
VALUE(TEXT(ROUNDUP(F4,1),"0.0"))
所以你会
=VLOOKUP(VALUE(TEXT(ROUNDUP(F4,1),"0.0")),A:B,2,FALSE)