VBA excel,在列中查找相应的值

VBA excel,在列中查找相应的值,vba,excel,Vba,Excel,我已经设法在两列中循环,以查找一列中的值是否存在于另一列中 现在,下一步是确定两列中的值是否在值右侧的单元格中包含相同的值 期望结果和当前结果的图片应该解释我想要实现的目标 注意:不要被代码弄糊涂了,因为我的工作簿中的列在两张不同的纸上 一旦我确认匹配,我就试着在专栏中循环两次,但在这一点上,我只是迷路了。。。。对不起 Sub loopDb() Set dbsheet1 = ThisWorkbook.Sheets("Sheet1") Set dbsheet2 = ThisWo

我已经设法在两列中循环,以查找一列中的值是否存在于另一列中

现在,下一步是确定两列中的值是否在值右侧的单元格中包含相同的值

期望结果和当前结果的图片应该解释我想要实现的目标

注意:不要被代码弄糊涂了,因为我的工作簿中的列在两张不同的纸上

一旦我确认匹配,我就试着在专栏中循环两次,但在这一点上,我只是迷路了。。。。对不起

Sub loopDb()

    Set dbsheet1 = ThisWorkbook.Sheets("Sheet1")
    Set dbsheet2 = ThisWorkbook.Sheets("Sheet2")

    lr1 = dbsheet1.Cells(Rows.Count, 1).End(xlUp).Row
    lr2 = dbsheet2.Cells(Rows.Count, 1).End(xlUp).Row

    For x = 2 To lr1
        act1 = dbsheet1.Cells(x, 1)

        For y = 2 To lr2
            act2 = dbsheet2.Cells(y, 1)

            If Not dbsheet2.Cells(y, 3).Value = "Match" Then
                'Only compare if previoulsy not done or resulted in "No match"
                If act2 = act1 Then
                    dbsheet2.Cells(y, 3).Value = "Match"

                    If dbsheet2.Cells(y, 3).Value = "Match" Then
                        For i = 2 To lr1
                            If dbsheet2.Cells(y, 1).Value = dbsheet2.Cells(i, 1).Value Then
                                dbsheet2.Cells(y, 4).Value = "Match"
                            Else
                                dbsheet2.Cells(y, 4).Value = "No match"
                            End If
                        Next i
                    End If

                 Else
                 dbsheet2.Cells(y, 3).Value = "No match"
                End If
            End If
        Next y

    Next x


End Sub

正如内森·萨夫(Nathan_Sav)所指出的,你可以用匹配公式解决你的问题

这使您完全可以在没有vba的情况下工作

用于匹配col1和col2的公式:

=IFERROR(IF(MATCH(sheet1!A1;sheet2!$A$1:$A$10;0)>=0;"Match");"No match")
匹配公式返回找到匹配项的索引。否则就是错误。要获得单词“匹配”和“不匹配”,我们需要
IF
IFERROR
公式

col1和val1以及col2和VAL2的匹配公式

{=IFERROR(IF(MATCH(sheet1!A1&sheet1!B1;sheet2!$A$1:$A$10&sheet2!$B$1:$B$10;0)>=0;"Match");"No match")}
将sheet2的两列组合在一起,就需要使用数组公式。要使其工作,请按Ctrl+Shift+Enter


我希望这会有所帮助

正如内森·萨夫指出的那样,你可以用匹配公式解决你的问题

这使您完全可以在没有vba的情况下工作

用于匹配col1和col2的公式:

=IFERROR(IF(MATCH(sheet1!A1;sheet2!$A$1:$A$10;0)>=0;"Match");"No match")
匹配公式返回找到匹配项的索引。否则就是错误。要获得单词“匹配”和“不匹配”,我们需要
IF
IFERROR
公式

col1和val1以及col2和VAL2的匹配公式

{=IFERROR(IF(MATCH(sheet1!A1&sheet1!B1;sheet2!$A$1:$A$10&sheet2!$B$1:$B$10;0)>=0;"Match");"No match")}
将sheet2的两列组合在一起,就需要使用数组公式。要使其工作,请按Ctrl+Shift+Enter


我希望这有助于为什么不在逻辑中使用
application.worksheetfunction.match(col1value,col2,0)
那么
如果匹配1和匹配2,那么
为什么不使用
application.worksheetfunction.match(col1value,col2,0)
那么
如果匹配1和匹配2,那么