Application.Match公式错误
我使用Application.Match
函数开发了下面的代码。
在我的第一个Application.Match
(通过使用IsError(x)
进行testing)中出现错误时,我希望执行的语句似乎不会被执行。
我的意图是,如果第一个Application.Match
返回一个错误,我希望我的代码执行相同的匹配,但search项目比原始匹配早一天的date。
我的代码:
Sub macro1() i = 8 Dim xx As Date For a = 1 To 3 x = Application.Match(Sheets("Dump"). _ Cells(1, i), Sheets("sheet2").Range("A1:C1"), 0) Set aa = Sheets("Dump").Cells(1, i) xx = aa - 1 If IsError(x) Then x = Application.Match(xx, Sheets("sheet2").Range("A1:C1"), 0) Sheets("Dump").Cells(2, i) = x i = i + 1 Next End Sub
工作表“转储”:
工作表“Sheet2”:
您的IsError
正在工作,并且您的第二个Application.Match
正在执行。 问题是,它也是返回一个错误,所以你只是觉得它没有被执行。
您需要将Date
转换为Double
Match
以使Match
使用variables工作:
If IsError(x) Then x = Application.Match(CDbl(xx), Sheets("sheet2").Range("A1:C1"), 0)
要捕获x
上的错误,如果Application.Match
返回一个错误使用下面的代码。
而不是你的路线:
x = Application.Match(Sheets("Dump"). _ Cells(1, i), Sheets("sheet2").Range("A1:C1"), 0)
使用下面的If IsError
:
If IsError(Application.Match(Sheets("Dump").Cells(1, i), Sheets("sheet2").Range("A1:C1"), 0)) Then ' do something if error (maybe MsgBox, maybe use Exit Sub) Else '<-- Match was successful x = Application.Match(Sheets("Dump").Cells(1, i), Sheets("sheet2").Range("A1:C1"), 0) End If