2017-07-24 132 views
1

我想弄清楚如何循环两个数组,比较第二个数组中的所有值到第一个数组中的所有值,并且对于每个匹配,测试列D和列H中同一行中的值是否相等。比较两列与其他两列,并找到匹配以及不匹配

在我的第一个数组中,我有这样的数据。 enter image description here

在我的第二个数组中,我有这样的数据。 enter image description here

所以,对于OW细胞,我想比较

OW &报告实体,并确保两者都是VARCHAR。这将是这些字段名称的相同数据类型的匹配。另外,对于OW &货币,两者都是VARCHAR,所以再次匹配。对于OW & CID_CounterpartyID,我看到Integer和VARCHAR,所以这不是匹配,我想知道这一点。

我试图把一些东西放在一起来做到这一点,我在下面显示我的代码,但这绝对不行。

Sub CompareFinal() 

    Dim r1 As Range 
    Dim r2 As Range 
    Dim cell As Range 
    Dim lastrow As Long 

    ' All Rows in First Array 
    With ThisWorkbook.Worksheets("Data Validation") 
     lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row 
     Set r1 = .Range("A2:A" & lastrow) 
    End With 

    ' All rows in Second Array 
    With ThisWorkbook.Worksheets("Data Validation") 
     lastrow = .Cells(.Rows.Count, "E").End(xlUp).Row 
     Set r2 = .Range("E2:E" & lastrow) 
    End With 

    ' Loop through Second Array, which will bequual to or longer than First Array 
    For Each cell In r2 
     If IsError(Application.Match(cell, r1, 0)) Then 
      cell.Offset(, 5) = "Match" 
     Else 
      cell.Offset(, 5) = "NoMatch" 
     End If 
    Next cell 

End Sub 

我敢肯定,我囫囵吞枣的代码的东西,这是给我不正确的结果。有人能帮我理清这个吗?我认为,无论是非代码功能还是VBA解决方案都可以完成这项工作。

谢谢。

+0

请添加您的代码。 – Cyril

+0

只要看看你说你想做什么...... = D1 = H1(非VBA)将输出真/假的同一行,在列D和H中具有相同的值。这将是最简单的方法,我可以认为...我为条件格式做了很多工作,而不是专门用于True/False的专栏。需要更深入地了解格式比较。 – Cyril

+0

我刚刚发布了代码。忘了把它包括在我原来的帖子里。 – ryguy72

回答