簡體   English   中英

為什么VBA中的VLookup失敗並顯示運行時錯誤1004?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM