错误在Excel列表中查找多个日期范围

时间:2016-01-06 13:41:33

标签: excel vba excel-vba

获取对象变量或变量未设置错误。我试图做的就是让自己能够分析从newStartDate到newEndDate的数据,并将它与oldStartDate和oldEndDate之间的数据进行比较。坚持找到"主列表中的日期地址"不确定为什么我要努力解决这个问题这是一个简单的任务,但我似乎无法解决这个错误。有什么想法吗?我已经阅读了与此类似的其他帖子,似乎无法弄清楚我的做法有何不同。在此先感谢以下代码:

注意:1/1/14是newStartDate范围内设置的日期。这个日期不存在,因为直到第二天才开展业务。我在帖子中发现了"设置newStartDateFinder"如果没有找到确切的日期,则底部的行会找到下一个最接近的日期。我开始认为并非如此,因为当我尝试运行调试器时,它似乎是空的。 / p>

Option Explicit
Sub Gather_Calculate_Performance()

'Variable declaration
Dim EBM As Workbook
Dim masterList, controlOut As Worksheet
Dim newStartDate As Range
Dim newEndDate As Range
Dim oldStartDate As Range
Dim oldEndDate As Range
Dim newStartDateFinder As Range
Dim newEndDateFinder As Range
Dim oldStartDateFinder As Range
Dim oldEndDateFinder As Range

'Setting main objects
Set EBM = Workbooks("Monthly Analysis (DEV)")
Set masterList = EBM.Sheets("Master List")
Set controlOut = EBM.Sheets("Control.Output")

'setting main variables
Set newStartDate = controlOut.Range("B" & 5)
Set newEndDate = controlOut.Range("B" & 6)
Set oldStartDate = controlOut.Range("D" & 5)
Set oldEndDate = controlOut.Range("D" & 6)

'Find addresses for dates
Set newStartDateFinder = masterList.Range("A:A").Find(newStartDate, LookIn:=xlValues, LookAt:=xlWhole)
Debug.Print newStartDateFinder.Address

End Sub

1 个答案:

答案 0 :(得分:1)

是的,如果您将Find参数设置为LookAtxlWhole函数将查找完全匹配。 (将其设置为xlPart会找到匹配,其中搜索字符串存在于单元格的一部分中。因此,Find函数将无法以您怀疑的方式工作。

我原以为你可以使用VLOOKUPMATCH函数找到newStartDate的下一个最接近的日期,但经过测试,它没有按我想象的方式工作。

然而,这个循环同时工作。如果我找到更有效的方法,我会更新答案。

'Find addresses for dates
Dim i as Integer
i = 0

Do 

    Set newStartDateFinder = masterList.Range("A:A").Find(newStartDate.Value +i, LookIn:=xlValues, LookAt:=xlWhole)
    i = i + 1

Loop Until Not newStartDateFinder is Nothing

Debug.Print newStartDateFinder.Address