将变量作为application.vlookup函数的查找值传递返回#N / A.

时间:2015-11-30 17:23:50

标签: vba vlookup

Worksheets("outputraw").Cells(1,4)包含日期,让我们说(09/09/2015) Worksheets("outputraw").Range("a:b")如下所示:

Col A       Col B
09/09/2015  2592.795
10/09/2015  2588.904
11/09/2015  2571.05
14/09/2015  2598.988
15/09/2015  2605.902
16/09/2015  2613.178

代码:

sub VlookupProblem()

dim Var as Date
Var = Worksheets("outputraw").Cells(1,4).Value 'meaning 09/09/2015
Worksheets("outputraw").Cells(1, 5) = Application.VLookup(Var, Worksheets("outputraw").Range("a:b"), 2, True) ' this returns #N/A or error 1004 if i debug with WorksheetFunction

Worksheets("outputraw").Cells(1, 6) = Application.VLookup(Worksheets("outputraw").Cells(1, 4), Worksheets("outputraw").Range("a:b"), 2, True) ' this returns the value i need, meaning 2592.795

end sub

1 个答案:

答案 0 :(得分:0)

问题是日期。日期是格式化的数字,有时在通过变量时很难得到确切的日期。

我喜欢将.value2相互比较。

Sub VlookupProblem()

Dim Var

Var = Worksheets("outputraw").Cells(1, 4).Value2 'meaning 09/09/2015
msgbox var
Worksheets("outputraw").Cells(1, 5) = Application.VLookup(Var, Worksheets("outputraw").Range("a:b").Value2, 2, True)
msgbox Worksheets("outputraw").Range("A5").Value2
Worksheets("outputraw").Cells(1, 6) = Application.VLookup(Worksheets("outputraw").Cells(1, 4), Worksheets("outputraw").Range("a:b"), 2, True)

End Sub