VBA匹配与失配

VBA匹配与失配,vba,excel,Vba,Excel,我需要帮助比较。我必须比较第1页和第2页:两列 如果表1和表2中的两列都匹配,则它将显示在表3中,显示匹配和不匹配 第1页: Column 1: ID 123 132 1234 Column 2: Amount 100 45 50 第2张: Column 1: ID 123 132 1234 Column 2: Amount 0 45 50 第3页上的“我的显示器”应显示: 匹配: 不匹配: ID 123 这是我的密码: Sub FindMatches(

我需要帮助比较。我必须比较第1页和第2页:两列

如果表1和表2中的两列都匹配,则它将显示在表3中,显示匹配和不匹配

第1页:

Column 1: ID 123 132 1234
Column 2: Amount 100 45 50         
第2张:

Column 1: ID 123 132 1234
Column 2: Amount 0 45 50        
第3页上的“我的显示器”应显示: 匹配:

不匹配:

ID 
123
这是我的密码:

Sub FindMatches()

    Dim Sht1Rng As Range
    Dim Sht2Rng As Range
    Dim C As Range
    Dim D As Range


    With Worksheets("Sheet1")
        Set Sht1Rng = .Range("B1", .Range("B65536").End(xlUp))
        Set Sht1Rng = .Range("D1", .Range("B65536").End(xlUp))
    End With

    With Worksheets("Sheet2")
        Set Sht2Rng = .Range("H1", .Range("H65536").End(xlUp))
        Set Sht2Rng = .Range("L1", .Range("B65536").End(xlUp))
    End With


    For Each C In Sht1Rng
        If Not IsError(Application.Match(C.Value, Sht2Rng, 0)) Then ' <-- successful match in both columns
            Worksheets("Match").Range("A65536").End(xlUp).Offset(1, 0).Value = C.Value
            Worksheets("Match").Range("A65536").End(xlUp).Offset(0, 1).Value = C.Offset(0, 2).Value
        End If


    Next C

End Sub
子查找匹配()
变暗Sht1Rng As范围
变暗Sht2Rng As范围
调光范围
暗D As范围
带工作表(“表1”)
设置Sht1Rng=.Range(“B1”和.Range(“B65536”).End(xlUp))
设置Sht1Rng=.Range(“D1”和.Range(“B65536”).End(xlUp))
以
带工作表(“表2”)
设置Sht2Rng=.Range(“H1”),.Range(“H65536”).End(xlUp))
设置Sht2Rng=.Range(“L1”、.Range(“B65536”).End(xlUp))
以
对于Sht1Rng中的每个C

如果不是IsError(Application.Match(C.Value,Sht2Rng,0)),那么“您忘记了有一个水平的HLOOKUP来补充(更常用的)垂直VLOOKUP

在H8中(根据随附的imnage)

填补权利


看看这是否是您想要的。我没有完全测试这个,我只运行了一个场景。我重写了你以前写的东西

Option Explicit

Sub FindMatches()

    Dim Ws1 As Worksheet
    Set Ws1 = ActiveWorkbook.Worksheets("Sheet1")

    Dim Ws2 As Worksheet
    Set Ws2 = ActiveWorkbook.Worksheets("Sheet2")

    Dim Ws3 As Worksheet
    Set Ws3 = ActiveWorkbook.Worksheets("Sheet3")

    Dim ws2_last_row As Long
    ws2_last_row = Ws2.Range("A" & Ws2.Rows.Count).End(xlUp).Row
    Dim ws3_insert_row As Long
    ws3_insert_row = Ws3.Range("A" & Ws3.Rows.Count).End(xlUp).Row + 1
    Dim cl As Range
    For Each cl In Ws1.Range("A2:A" & Ws1.Range("A" & Ws1.Rows.Count).End(xlUp).Row)

        Dim find_rng As Range
        Set find_rng = Ws2.Range("A2:A" & ws2_last_row).Find(cl.Value)

        If Not find_rng Is Nothing Then
            If find_rng.Offset(0, 1).Value = cl.Offset(0, 1).Value Then
                Ws3.Range("A" & ws3_insert_row).Value = cl.Value
                Ws3.Range("B" & ws3_insert_row).Value = cl.Offset(0, 1).Value
                ws3_insert_row = ws3_insert_row + 1
            End If
        End If


    Next cl

End Sub
步骤运行后,表3看起来像这样


您遇到了什么问题?我无法比较两个列的值,然后检查它们是否与表3的显示相匹配
=HLOOKUP(H7, 1:2, 2, FALSE)
Option Explicit

Sub FindMatches()

    Dim Ws1 As Worksheet
    Set Ws1 = ActiveWorkbook.Worksheets("Sheet1")

    Dim Ws2 As Worksheet
    Set Ws2 = ActiveWorkbook.Worksheets("Sheet2")

    Dim Ws3 As Worksheet
    Set Ws3 = ActiveWorkbook.Worksheets("Sheet3")

    Dim ws2_last_row As Long
    ws2_last_row = Ws2.Range("A" & Ws2.Rows.Count).End(xlUp).Row
    Dim ws3_insert_row As Long
    ws3_insert_row = Ws3.Range("A" & Ws3.Rows.Count).End(xlUp).Row + 1
    Dim cl As Range
    For Each cl In Ws1.Range("A2:A" & Ws1.Range("A" & Ws1.Rows.Count).End(xlUp).Row)

        Dim find_rng As Range
        Set find_rng = Ws2.Range("A2:A" & ws2_last_row).Find(cl.Value)

        If Not find_rng Is Nothing Then
            If find_rng.Offset(0, 1).Value = cl.Offset(0, 1).Value Then
                Ws3.Range("A" & ws3_insert_row).Value = cl.Value
                Ws3.Range("B" & ws3_insert_row).Value = cl.Offset(0, 1).Value
                ws3_insert_row = ws3_insert_row + 1
            End If
        End If


    Next cl

End Sub