Excel 执行vlookup直到没有错误

Excel 执行vlookup直到没有错误,excel,vlookup,vba,Excel,Vlookup,Vba,我想让一个vlookup跑。如果失败,我想将查找值增加1,然后再次运行vlookup。我想继续这个过程直到vlookup成功 我该怎么办 我尝试过使用一些循环和错误处理,但我对宏还不熟悉,所以我还没有找到任何可以工作的方法。可能是这样的 dim findThis as long, maxThis as long, var as variant, result as variant with worksheets("MyWorksheet") maxThis = application.

我想让一个vlookup跑。如果失败,我想将查找值增加1,然后再次运行vlookup。我想继续这个过程直到vlookup成功

我该怎么办


我尝试过使用一些循环和错误处理,但我对宏还不熟悉,所以我还没有找到任何可以工作的方法。

可能是这样的

dim findThis as long, maxThis as long, var as variant, result as variant

with worksheets("MyWorksheet")
    maxThis = application.max(.columns("A"))
    for findThis = (Date - 100) to maxThis step 1
        var = application.match(findthis, .columns("A"), 0)
        if not iserror(var) then exit for
    next findthis

    if findthis <= maxthis then
        result = application.index(.columns("Z"), var)
        'alternate
        result = .Cells(var, "Z").value

        debug.print result
    end if

end with
dim find此为long,maxThis为long,var为variant,result为variant
带工作表(“我的工作表”)
maxThis=application.max(.columns(“A”))
对于findThis=(日期-100)到maxThis step 1
var=application.match(findthis、.columns(“A”),0)
如果不是iserror(var),则退出
下一个找到这个

如果找到了,你有一些样本数据吗?很可能有更好的方法来实现这一点,以及数据,请提供代码。查找值列是按时间顺序排列的日期,缺少随机日期。(我使用递增查找值1来简化问题)。在VBA代码中,使用
应用程序.match
而不是
工作表函数.vlookup
。它速度更快,并具有其他特性。将返回的值传递到变量中,并使用
iserror
确定是否成功。成功后,使用变量作为
application.index
中的行号返回结果。