电子表格“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”实际上是1/7/1991细胞的复制和粘贴。
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想从我这里得到什么?
答案 0 :(得分:3)
问题在于使用SIDate作为日期(Visual Basic日期类型)
我的猜测是视觉基本日期类型和excel日期类型不匹配,这就是你收到错误的原因
而是将SIDate声明为范围,并且它将起作用
以下是代码:
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
答案 1 :(得分:2)
您要求vLookup返回2列范围,而不是1列范围。更改BRange =“A2:B9”以使您的vLookup获得S& P值。
或者,您可以将范围更改为A2:C9并在vLookup中将2更改为3并获得DJ平均值。
简而言之,vLookup只能返回一个范围内最大列数的列引用。它可以在3列范围内返回第1,第2,第3列参考,但不能返回第4列,因为没有第4列。