Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将两列与其他两列进行比较,查找匹配项和不匹配项_Excel_Vba - Fatal编程技术网

Excel 将两列与其他两列进行比较,查找匹配项和不匹配项

Excel 将两列与其他两列进行比较,查找匹配项和不匹配项,excel,vba,Excel,Vba,我试图找出如何循环两个数组,将第二个数组中的所有值与第一个数组中的所有值进行比较,对于每个匹配项,测试同一行、D列和H列中的值是否相等 在我的第一个数组中,我有如下数据: 在我的第二个数组中,我有如下数据: 所以,对于OW单元,我想比较 OW&报告实体,并确保两者都是VARCHAR。对于这些字段名,这将是相同数据类型的匹配。另外,对于OW和Currency,两者都是VARCHAR,所以再次匹配。对于OW&CID_CounterpartyID,我看到Integer和VARCHAR,所以这不是一

我试图找出如何循环两个数组,将第二个数组中的所有值与第一个数组中的所有值进行比较,对于每个匹配项,测试同一行、D列和H列中的值是否相等

在我的第一个数组中,我有如下数据:

在我的第二个数组中,我有如下数据:

所以,对于OW单元,我想比较

OW&报告实体,并确保两者都是VARCHAR。对于这些字段名,这将是相同数据类型的匹配。另外,对于OW和Currency,两者都是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解决方案就可以了。

我刚刚意识到,我实际上需要再匹配两列。下面的函数似乎是我想要的

=ISNUMBER(MATCH(B2 & "|" & C2 & "|" &D2,$E$2:$E$800 & "|" & $H$2:$H$800 & "|" & $I$2:$I$800,0))
我发现这个链接非常有用


希望这对其他人有帮助。

我刚刚意识到我实际上需要再匹配一列和两列。下面的函数似乎是我想要的

=ISNUMBER(MATCH(B2 & "|" & C2 & "|" &D2,$E$2:$E$800 & "|" & $H$2:$H$800 & "|" & $I$2:$I$800,0))
我发现这个链接非常有用


希望这对其他人有所帮助。

请添加您的代码。只需看看您所说的您想做的事情=D1=H1(非VBA)将为D列和H列中具有相同值的同一行输出True/False。这是我能想到的最简单的方法。。。对于条件格式,我经常这样做,而不是有一个专门用于True/False的列。需要更深入地比较格式。我刚刚发布了代码。忘了在我原来的帖子里写这个了。请添加你的代码。看看你说你想做什么=D1=H1(非VBA)将为D列和H列中具有相同值的同一行输出True/False。这是我能想到的最简单的方法。。。对于条件格式,我经常这样做,而不是有一个专门用于True/False的列。需要更深入地比较格式。我刚刚发布了代码。忘了在我原来的帖子里写这个。