Application.Match vs Find

时间:2017-08-25 13:47:13

标签: excel vba excel-vba

我想编写一个宏来获取A列中的最后一项,并检查它是否存在于列B到D的任何位置。但是,以下代码永远不会找到匹配并返回"不会存在":

Sub MatchInRange()

Dim LastItem As Range
Set LastItem = Range("A1").End(xlDown)

If Not IsError(Application.Match(LastItem, "B:D", 0)) Then
    MsgBox "Exists in range"
Else
    MsgBox "Doesn't exist"
End If
End Sub

但是当使用Find:

重写时它会起作用
Sub FindInRange()

Dim LastItem As Range
Set LastItem = Range("A1").End(xlDown)

If Not Range("B:D").Find(LastItem) Is Nothing Then
    MsgBox "Exists in range"
Else
    MsgBox "Doesn't exist"
End If
End Sub

有人能告诉我第一个代码我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

匹配适用于1行或1列。您使用3 - B C D 。重写第一个公式如下:

Sub TestMe()
    Debug.Print WorksheetFunction.match("TestValue", Range("B:B"), 0)
End Sub