繁体   English   中英

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

[英]Error Finding multiple date ranges in Excel List

获取对象变量或使用变量未设置错误。 我要做的只是将自己定位为能够分析从newStartDate到newEndDate的数据,并将其与oldStartDate和oldEndDate之间的数据进行比较。 一直坚持在“主列表”中查找日期的地址,不确定为什么要为此苦苦挣扎,这是一个简单的任务,但我似乎无法解决错误。 有什么想法吗? 我已经阅读了与此类似的其他文章,似乎无法弄清楚我在做什么。 在此先感谢以下代码:

注意:1/1/14是在newStartDate范围内设置的日期。 该日期不存在,因为直到第二天才开展业务。 我在帖子中发现,如果找不到确切的日期,底部的“ Set newStartDateFinder”行将找到下一个最近的日期。.我开始认为情况并非如此,因为当我尝试运行调试器时它似乎是空的。

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

是的,如果将LookAt参数设置为xlWhole ,则Find函数将查找完全匹配。 (将其设置为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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM