VBA匹配函数查找值不存在

时间:2019-02-21 17:06:28

标签: excel vba excel-2016

我有一些VBA代码可以执行与其他工作表的匹配。然后,从该匹配返回的行将用于确定If语句的结果。这是我的代码:

On Error Resume Next 'Accuracy Index Match Start
aMatchRow = Application.Match(summarySheet.Cells(accuracyRow, 3), aCommSheet.Range("C:C"), 0)
On Error GoTo 0

With summarySheet.Cells(accuracyRow, 15)
    If aMatchRow > 0 Then
        .Value = aCommSheet.Cells(aMatchRow, 15)
    Else
        .Value = "COMMENT REQUIRED"
    End If
End With

我遇到的问题是,即使没有匹配项,也会返回一个值。因此,例如,在summarySheet.Cells(accuracyRow, 3)aCommSheet.Range("C:C")不匹配的情况下,我仍然得到返回的行值,然后将其馈送到If语句中,因此错误的值返回到summarySheet.Cells(accuracyRow, 15)

如果没有匹配项,则应执行“ ELSE”。但是无论如何都将执行“ If”操作。

1 个答案:

答案 0 :(得分:1)

要扩展@GSerg的评论:

Dim m
m = Application.Match(summarySheet.Cells(accuracyRow, 3), aCommSheet.Range("C:C"), 0)


With summarySheet.Cells(accuracyRow, 15)
    If Not IsError(m) Then '<<< test for no match here
        .Value = aCommSheet.Cells(m, 15)
    Else
        .Value = "COMMENT REQUIRED"
    End If
End With