[英]VLookup in VB returning Error 2042 where VLookup in worksheet returns expected
我正在嘗試編寫一個函數,該函數將基於匹配日期在表中查找值。 如果沒有匹配,它將在返回錯誤之前最多7天進行查找。
Option Explicit
Public Function GetWeekEndBalanceFromStatement(lookupDate As Date, statement As Range, column As Integer) As Variant
Dim lookupModifier As Integer
Do While IsError(Application.VLookup(DateAdd("d", lookupModifier, lookupDate), statement, column, False)) And lookupModifier > -7
lookupModifier = lookupModifier - 1
Loop
GetWeekEndBalanceFromStatement = Application.VLookup(DateAdd("d", lookupModifier, lookupDate), statement, column, False)
End Function
分解調試時遇到的問題是VLookups始終返回
錯誤2042
即使在電子表格中寫入了相同的VLookup也會返回一個值。
編寫的函數需要參考,K8是第一行:
=DATE(2018,1,5)
=VLOOKUP(K8, A:F, 6,FALSE )
=GetWeekEndBalanceFromStatement(K8,A:F,6)
關於我可能做錯了什么的任何線索? 我試圖將日期封裝在CDate中,將.Value附加到范圍中,然后將日期作為一個變量引入並訪問.Value2。
運行一些測試后,我記得使用VLookup
和“與日期Match
時遇到的一些問題,最好使用它們的Excel值(將Date
更改為Double
)。
修改功能碼
Option Explicit
Public Function GetWeekEndBalanceFromStatement(lookupDate As Double, statement As Range, column As Integer) As Variant
Dim lookupModifier As Integer
Do While IsError(Application.VLookup(lookupDate + lookupModifier, statement, column, False)) And lookupModifier > -7
lookupModifier = lookupModifier - 1
Loop
GetWeekEndBalanceFromStatement = Application.VLookup(lookupDate + lookupModifier, statement, column, False)
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.