excel 以日期为参数进行查找

ttygqcqt  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(74)

我有一个表(让我们称之为tb1),它有一个日期列。
我需要使用tb1_date作为键在tb2(上面有日期)中搜索,并且必须返回tb2相同日期所在的行号

for i = 1 to tb1_length
    v1 = range("A" & i).value    'date from tb1, i is just a random row
    msgbox range("D1:D20").find(v1).row  'search for the row number in tb2 (say its D1:D20)

字符串
现在,每当我使用date作为搜索参数时,都会出现运行时错误91或类似错误
我曾尝试将日期类型转换为长类型(甚至格式化它),但在搜索中没有成功

mec1mxoz

mec1mxoz1#

如果没有找到匹配,Range.Find()的返回值将是Nothinghttps://learn.microsoft.com/en-us/office/vba/api/excel.range.find)-在这种情况下,表达式Find(v1).Row等效于Nothing.Row,这将导致错误91(由于Object变量未设置)
如果您正在搜索的值不存在,则Find(v1)将返回Nothing,从而导致错误
要解决这个问题,您必须检查返回值是否为Nothing,如果不是,则只继续获取行

Dim match As Range

Set match = Range("D1:D20").Find(v1)
If Not match Is Nothing Then
    MsgBox (match.Row)
End If

字符串

相关问题