Vba Excel VLookup()工作表函数中出现错误2042(“不适用”)
需要一些帮助来找出奇怪的VBAVba 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
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之间的数字。