[英]Why is VLookup in VBA failing with runtime error 1004?
電子表格“ Sheet3”如下所示:
S&P 500 DJIA
1/1/1991 795.4476 2973.09
1/2/1991 786.3856 2947.1
1/3/1991 775.4636 2905.19
1/4/1991 773.5364 2896.8
1/7/1991 760.2996 2847.9
1/8/1991 759.0029 2832.81
1/9/1991 750.8416 2788.67
1/10/1991 758.1719 2820.8
同樣,單元格“ F2”實際上是1991年1月7日單元格的復制和粘貼。
VBA代碼如下所示:
Sub badlook3()
Dim BenchSI As Variant
Dim BRange As Range
Dim SIDate As Date
Set BRange = Worksheets("Sheet3").Range("A2:C9")
MsgBox BRange.Address
SIDate = Worksheets("Sheet3").Range("F2").Value
BenchSI = Application.WorksheetFunction.VLookup(SIDate, BRange, 2, True)
End Sub
我收到“無法獲取WorkSheet Function類的VLOOKUP屬性”錯誤。
我在這里想念什么? 列A的順序正確。 他們是日期。 Excel向我要什么?
問題是使用SIDate作為Date(Visual Basic日期類型)
我的猜測是視覺基本日期類型和excel日期類型不匹配,這就是為什么會出現錯誤
而是將SIDate聲明為Range ,它將起作用
這是代碼:
Sub badlook3()
Dim BenchSI As Variant
Dim BRange As Range
Dim SIDate As Range
Set BRange = Worksheets("Sheet3").Range("A2:C9")
MsgBox BRange.Address
Set SIDate = Worksheets("Sheet3").Range("F2")
BenchSI = Application.WorksheetFunction.VLookup(SIDate, BRange, 2, True)
End Sub
您正在要求vLookup返回2列范圍,而不是1列范圍。 更改BRange =“ A2:B9”,以使您的vLookup獲得標准普爾值。
或者,您可以將范圍更改為A2:C9,然后在vLookup中將2更改為3,以獲取DJ平均值。
簡而言之,vLookup只能將列引用返回到范圍中最大的列數。 它可以在3列范圍內返回第1、2、0r第3列引用,但不能返回第4列,因為沒有第4列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.