Vba Excel VLookup()工作表函数中出现错误2042(“不适用”)

Vba Excel VLookup()工作表函数中出现错误2042(“不适用”),vba,excel,vlookup,Vba,Excel,Vlookup,需要一些帮助来找出奇怪的VBAVLOOKUP类型错误匹配错误。代码非常简单,因为sss0是一个随机数,我只想找到一个范围内最接近的值(表'BMD_CDF',range(“A2:B999”))。在电子表格中,我将表格的格式(“BMD_CDF”)。范围(“A2:B999”)设置为“科学的” Dim LookUp_Range As Range Dim sss0 As Double Set LookUp_Range = Sheets("BMD_CDF").Range("A2:B999") sss0=A

需要一些帮助来找出奇怪的VBA
VLOOKUP
类型错误匹配
错误。代码非常简单,因为sss0是一个随机数,我只想找到一个范围内最接近的值(表'BMD_CDF',range(“A2:B999”))。在电子表格中,我将表格的格式(“BMD_CDF”)。范围(“A2:B999”)设置为“科学的”

Dim LookUp_Range As Range
Dim sss0 As Double
Set LookUp_Range = Sheets("BMD_CDF").Range("A2:B999")

sss0=Application.WorksheetFunction.Max(Rnd(), 0.005)
Debug.Print Application.VLookup(sss0, LookUp_Range, 2, 0)
错误消息

什么范围看起来像
错误2042(“N/A”)似乎是由Excel工作表函数返回的值:

Aplication.WorksheetFunction.Max(Rnd(), 0.005)
始终小于1的值将永远不会进入
列A
中指定的值范围(>6)。出于测试目的,尝试将其替换为
列A
中该值范围内的任何数字,例如,
sss0=6.15
,并修改VLOOKUP()语句,如下所示:

Debug.Print Application.VLookup(sss0, LookUp_Range, 2, 1)
(其中1代表逻辑
TRUE
)使其工作,即根据您的定义查找最接近的值(不完全匹配)


希望这能有所帮助。

(a)哪一行给出了类型不匹配?(b) 我希望您的
Debug.Print
通常会打印
Error 2042
,因为随机数不太可能完全出现在只有998个值的样本中。为什么不
Debug.Print Application.VLookup(sss0,查找范围,2,-1)
?假=0,真=1英寸VBA@tao.hong:如果你做最后一行
Debug.Print temp
?@tao.hong:你想在最后一个参数中得到最接近的匹配pass=-1,如果你通过0,你会得到完全匹配。@tao.hong你没有得到想要的结果的原因是(a)你在做完全匹配,和(b)[一旦你修正了(a)]您正在从6开始的一组值中搜索介于0和1之间的数字。