VLookup和范围问题

时间:2016-06-08 08:46:58

标签: excel vba excel-vba

我打算从外部工作簿中复制一个值。我想导入与特定日期和特定列标题对应的值。行标题是日期。具体来说,我们有:

            Cost     Quantity
   Date1    2        3
   Date2    4        5

为了导入与(Date1,Cost)对应的值,我尝试过:

   Set currentWb = ActiveWorkbook
   Set openWb = Workbooks.Open(filepath & Path)
   Set openWs = openWb.Sheets(6)
   vary = 175 + MonthNo + YearNo mod 2016
   currentWb.Sheets("Sheet1").Cells(19 + MonthNo + 12 * (YearNo Mod 2016), 2).Value = Application.VLookup(CLng(CDate(openWs.Range("A:" & vary))), openWs.Range("A164:B187"), Application.Match("Cost", openWs.Range("b7:g7")))

找到正确的文件没有问题。 MonthNo和YearNo只是用一些预定月份抵消当前日期的变量。我省略了这些以便更好地概述。

我遇到的问题是我要导入数据的行。我在那行中得到Object or With variable not specified

为什么我使用CLng(CDate())是由于数据的写入方式。在带有Date标题的列中,这些表示为实际日期,根据我的理解,此转换对于防止VLookup查找日期值(整数)至关重要。

到目前为止我所尝试的只是写“4月16日”而不是openWs.Range()。同样的错误,所以我假设我还没有完全理解VLookup,即使我确信通过阅读文档应该可以做到这一点。我错过了什么?

编辑:按照@smeaden的建议,我将函数拆分为较小的变量。

使用

 Dim range1, range2 as integer
 range1 = openWs.Range("A164:B187")
 range2 = Application.Match("Cost", openWs.Range("A7:G7"))
 MsgBox range1
 MsgBox range2

在两个MsgBox中导致错误Object or With variable not specified(我为range1及其初始​​化注释了MsgBox,并且只在第一个MsgBox错误后尝试打印MsgBox)。

0 个答案:

没有答案