Excel VBA如果第1页上的单元格与第2页第I列中的单元格匹配,则?

Excel VBA如果第1页上的单元格与第2页第I列中的单元格匹配,则?,excel,vba,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列中找不到匹配的单元格值。代码的问题是,您将单个单元格

我试图使用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列中找不到匹配的单元格值。代码的问题是,您将单个单元格与第2页的整个“I”列进行比较。要解决此问题,可以使用查找来查看是否存在匹配值。如果是,则返回匹配

这里有一些关于如何做到这一点的代码,我还将定义
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
端接头

是有关查找方法的文档。

工作表(“表2”)。范围(“I1”)。列
将始终返回“9”,因为列
I
是第9列。您正在将
范围(“H22”)
中的值与“9”进行比较。除非
H22
为“9”,否则您将得到“未找到匹配项”


请尝试使用
范围
对象的
.find
方法或在列中循环查找值。

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

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

如果您只是想检查该值是否存在,则使用
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和更高值之间的数字


顺便说一句,工作表和2之间通常没有空格。

上面的代码有什么不起作用?我怀疑您可能需要用工作表来限定第一个范围语句。我重新编写了我的答案,让您有一个更大的想法,它一直告诉我找不到匹配项。如果我想让它先识别匹配项而不是不匹配项,我会用什么来代替“无”?