如果工作表1上的单元格与工作表2上的第I列中的单元格匹配,那么VBA是什

时间:2014-10-08 12:18:56

标签: excel vba

我正在尝试使用vba if语句检查工作表1上的单元格H22是否与工作表2中的第I列中的单元格匹配。

有人可以告诉我哪里出错吗?感谢

    If Range("H22").Value Like Worksheets("Sheet 2").Range("I1").Column Then

MsgBox "Match"

Else

MsgBox "No Match Found"

End If

它一直告诉我没有找到匹配,所以我猜它无法找到第2页第I列中匹配的单元格值

4 个答案:

答案 0 :(得分:0)

您的代码存在的问题是,您需要将单个单元格与整个单元格进行比较。工作表2上的列。您可以采取的措施是使用查找来查看是否存在匹配的值。如果是,则返回匹配。

以下是有关如何执行此操作的一些代码,我还会定义Range("H22").Value,以便您确切地知道它的来源。

Option Explicit

Sub Macro()

Dim oWs As Worksheet
Dim rSearchRng As Range
Dim lEndNum As Long
Dim vFindVar As Variant



Set oWs = ActiveWorkbook.Worksheets("Sheet2")

lEndNum = oWs.Range("I1").End(xlDown).Row

Set rSearchRng = oWs.Range("I1:I" & CStr(lEndNum))

Set vFindVar = rSearchRng.Find(Range("H22").Value)

If Not vFindVar Is Nothing Then

    MsgBox "Match"

Else

    MsgBox "No Match Found"

End If

End Sub

Here是关于find方法的文档。

答案 1 :(得分:0)

Worksheets("Sheet 2").Range("I1").Column将始终返回“9”,因为列I是第9列。您正在将Range("H22")中的值与“9”进行比较。除非H22为“9”,否则您将获得“未找到匹配”。

请尝试使用.find对象的range方法,或循环查看值。

答案 2 :(得分:0)

以下是尝试将单元格值与列中的值进行匹配的典型示例:

Sub james()
    Dim v As Variant, r As Range, rWhere As Range
    v = Sheets("Sheet1").Range("H22").Value
    Set rWhere = Sheets("Sheet2").Range("I:I")
    Set r = rWhere.Find(what:=v, After:=rWhere(1))
    If r Is Nothing Then
        MsgBox "No match found"
    Else
        MsgBox "Match found"
    End If
End Sub

答案 3 :(得分:0)

如果您只是想检查值的存在,那么请使用Application.Match()WorksheetFunction.Match()引入低级查找函数,并取决于它是否返回错误。这样的事情就足够了。

If IsError(Application.Match(Range("H22").Value, Sheets("Sheet 2").Columns("I"), 0)) Then
    MsgBox "No Match Found"
Else
    MsgBox "Match"
End If

如果您想要查找多个,Application.CountIf()会在 0 之间返回一个更高的数字。

顺便说一句, Sheet 2 之间通常没有空格。